linux-amlogic.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
@ 2019-03-21 20:17 Martin Blumenstingl
  2019-03-21 21:44 ` Matthew Wilcox
  0 siblings, 1 reply; 13+ messages in thread
From: Martin Blumenstingl @ 2019-03-21 20:17 UTC (permalink / raw)
  To: linux-mm, linux-kernel, linux-arm-kernel
  Cc: mhocko, linux, willy, rppt, liang.yang, linux-mtd, linux-amlogic, akpm

Hello,

I am experiencing the following crash:
  ------------[ cut here ]------------
  kernel BUG at mm/slub.c:3950!
  Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
  Modules linked in:
  CPU: 1 PID: 1 Comm: swapper/0 Not tainted
5.1.0-rc1-00080-g37b8cb064293-dirty #4252
  Hardware name: Amlogic Meson platform
  PC is at kfree+0x250/0x274
  LR is at meson_nfc_exec_op+0x3b0/0x408
  ...
my goal is to add support for the 32-bit Amlogic Meson SoCs (ARM
Cortex-A5 / Cortex-A9 cores) in the meson-nand driver.

I have traced this crash to the kfree() in meson_nfc_read_buf().
my observation is as follows:
- meson_nfc_read_buf() is called 7 times without any crash, the
kzalloc() call returns 0xe9e6c600 (virtual address) / 0x29e6c600
(physical address)
- the eight time meson_nfc_read_buf() is called kzalloc() call returns
0xee39a38b (virtual address) / 0x2e39a38b (physical address) and the
final kfree() crashes
- changing the size in the kzalloc() call from PER_INFO_BYTE (= 8) to
PAGE_SIZE works around that crash
- disabling the meson-nand driver makes my board boot just fine
- Liang has tested the unmodified code on a 64-bit Amlogic SoC (ARM
Cortex-A53 cores) and he doesn't see the crash there

in case the selected SLAB allocator is relevant:
  CONFIG_SLUB=y

the following printk statement is used to print the addresses returned
by the kzalloc() call in meson_nfc_read_buf():
  printk("%s 0x%px 0x%08x\n", __func__, info, virt_to_phys(info));

my questions are:
- why does kzalloc() return an unaligned address 0xee39a38b (virtual
address) / 0x2e39a38b (physical address)?
- how can further analyze this issue?
- (I don't know where to start analyzing: in mm/, arch/arm/mm, the
meson-nand driver seems to work fine on the 64-bit SoCs but that
doesn't fully rule it out, ...)


Regards
Martin

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-03-21 20:17 32-bit Amlogic (ARM) SoC: kernel BUG in kfree() Martin Blumenstingl
@ 2019-03-21 21:44 ` Matthew Wilcox
  2019-03-22 21:07   ` Martin Blumenstingl
  0 siblings, 1 reply; 13+ messages in thread
From: Matthew Wilcox @ 2019-03-21 21:44 UTC (permalink / raw)
  To: Martin Blumenstingl
  Cc: mhocko, linux, linux-kernel, rppt, linux-mm, liang.yang,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

On Thu, Mar 21, 2019 at 09:17:34PM +0100, Martin Blumenstingl wrote:
> Hello,
> 
> I am experiencing the following crash:
>   ------------[ cut here ]------------
>   kernel BUG at mm/slub.c:3950!

        if (unlikely(!PageSlab(page))) {
                BUG_ON(!PageCompound(page));

You called kfree() on the address of a page which wasn't allocated by slab.

> I have traced this crash to the kfree() in meson_nfc_read_buf().
> my observation is as follows:
> - meson_nfc_read_buf() is called 7 times without any crash, the
> kzalloc() call returns 0xe9e6c600 (virtual address) / 0x29e6c600
> (physical address)
> - the eight time meson_nfc_read_buf() is called kzalloc() call returns
> 0xee39a38b (virtual address) / 0x2e39a38b (physical address) and the
> final kfree() crashes
> - changing the size in the kzalloc() call from PER_INFO_BYTE (= 8) to
> PAGE_SIZE works around that crash

I suspect you're doing something which corrupts memory.  Overrunning
the end of your allocation or something similar.  Have you tried KASAN
or even the various slab debugging (eg redzones)?


_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-03-21 21:44 ` Matthew Wilcox
@ 2019-03-22 21:07   ` Martin Blumenstingl
  2019-03-25 10:04     ` Liang Yang
  0 siblings, 1 reply; 13+ messages in thread
From: Martin Blumenstingl @ 2019-03-22 21:07 UTC (permalink / raw)
  To: Matthew Wilcox, liang.yang
  Cc: mhocko, linux, linux-kernel, rppt, linux-mm, linux-mtd,
	linux-amlogic, akpm, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 2547 bytes --]

Hi Matthew,

On Thu, Mar 21, 2019 at 10:44 PM Matthew Wilcox <willy@infradead.org> wrote:
>
> On Thu, Mar 21, 2019 at 09:17:34PM +0100, Martin Blumenstingl wrote:
> > Hello,
> >
> > I am experiencing the following crash:
> >   ------------[ cut here ]------------
> >   kernel BUG at mm/slub.c:3950!
>
>         if (unlikely(!PageSlab(page))) {
>                 BUG_ON(!PageCompound(page));
>
> You called kfree() on the address of a page which wasn't allocated by slab.
>
> > I have traced this crash to the kfree() in meson_nfc_read_buf().
> > my observation is as follows:
> > - meson_nfc_read_buf() is called 7 times without any crash, the
> > kzalloc() call returns 0xe9e6c600 (virtual address) / 0x29e6c600
> > (physical address)
> > - the eight time meson_nfc_read_buf() is called kzalloc() call returns
> > 0xee39a38b (virtual address) / 0x2e39a38b (physical address) and the
> > final kfree() crashes
> > - changing the size in the kzalloc() call from PER_INFO_BYTE (= 8) to
> > PAGE_SIZE works around that crash
>
> I suspect you're doing something which corrupts memory.  Overrunning
> the end of your allocation or something similar.  Have you tried KASAN
> or even the various slab debugging (eg redzones)?
KASAN is not available on 32-bit ARM. there was some progress last
year [0] but it didn't make it into mainline. I tried to make the
patches apply again and got it to compile (and my kernel is still
booting) but I have no idea if it's still working. for anyone
interested, my patches are here: [1] (I consider this a HACK because I
don't know anything about the code which is being touched in the
patches, I only made it compile)

SLAB debugging (redzones) were a great hint, thank you very much for
that Matthew! I enabled:
  CONFIG_SLUB_DEBUG=y
  CONFIG_SLUB_DEBUG_ON=y
and with that I now get "BUG kmalloc-64 (Not tainted): Redzone
overwritten" (a larger kernel log extract is attached).

I'm starting to wonder if the NAND controller (hardware) writes more
than 8 bytes.
some context: the "info" buffer allocated in meson_nfc_read_buf is
then passed to the NAND controller IP (after using dma_map_single).

Liang, how does the NAND controller know that it only has to send
PER_INFO_BYTE (= 8) bytes when called from meson_nfc_read_buf? all
other callers of meson_nfc_dma_buffer_setup (which passes the info
buffer to the hardware) are using (nand->ecc.steps * PER_INFO_BYTE)
bytes?


Regards
Martin


[0] https://lore.kernel.org/patchwork/cover/913212/
[1] https://github.com/xdarklight/linux/tree/arm-kasan-hack-v5.1-rc1

[-- Attachment #2: slub-redzones.txt --]
[-- Type: text/plain, Size: 23501 bytes --]

[    2.742070] meson_nfc_read_buf e95e7d00 0x295e7d00
[    2.742155] meson_nfc_read_buf e95e7d00 0x295e7d00
[    2.746056] meson_nfc_read_buf e95e62c0 0x295e62c0
[    2.750947] meson_nfc_read_buf e95e7d00 0x295e7d00
[    2.755530] =============================================================================
[    2.763673] BUG kmalloc-64 (Not tainted): Redzone overwritten
[    2.769392] -----------------------------------------------------------------------------
[    2.769392] 
[    2.779013] Disabling lock debugging due to kernel taint
[    2.784303] INFO: 0x(ptrval)-0x(ptrval). First byte 0xff instead of 0xcc
[    2.790982] INFO: Allocated in 0xffffffff age=4294937574 cpu=4294967295 pid=-1
[    2.798171]  0xffffffff
[    2.800598]  0xffffffff
[    2.803024]  0xffffffff
[    2.805451]  0xffffffff
[    2.807879]  0xffffffff
[    2.810306]  0xffffffff
[    2.812733]  0xffffffff
[    2.815160]  0xffffffff
[    2.817587]  0xffffffff
[    2.820014]  0xffffffff
[    2.822441]  0xffffffff
[    2.824869]  0xffffffff
[    2.827296]  0xffffffff
[    2.829722]  0xffffffff
[    2.832150]  0xffffffff
[    2.834577]  0xffffffff
[    2.837006] INFO: Freed in 0xffffffff age=4294937574 cpu=4294967295 pid=-1
[    2.843852]  0xffffffff
[    2.846279]  0xffffffff
[    2.848706]  0xffffffff
[    2.851133]  0xffffffff
[    2.853560]  0xffffffff
[    2.855987]  0xffffffff
[    2.858414]  0xffffffff
[    2.860842]  0xffffffff
[    2.863269]  0xffffffff
[    2.865696]  0xffffffff
[    2.868123]  0xffffffff
[    2.870550]  0xffffffff
[    2.872977]  0xffffffff
[    2.875404]  0xffffffff
[    2.877831]  0xffffffff
[    2.880258]  0xffffffff
[    2.882687] INFO: Slab 0x(ptrval) objects=25 used=4 fp=0x(ptrval) flags=0x10201
[    2.889968] INFO: Object 0x(ptrval) @offset=7424 fp=0x(ptrval)
[    2.889968] 
[    2.897251] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    2.905917] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    2.914585] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    2.923253] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    2.931922] Object (ptrval): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[    2.940503] Object (ptrval): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[    2.949085] Object (ptrval): ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
[    2.957666] Object (ptrval): ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
[    2.966248] Redzone (ptrval): ff ff ff ff                                      ....
[    2.973876] Padding (ptrval): ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff  ................
[    2.982544] Padding (ptrval): ff ff ff ff ff ff ff ff                          ........
[    2.990523] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G    B             5.1.0-rc1-00088-g406014e081b4-dirty #4272
[    3.000574] Hardware name: Amlogic Meson platform
[    3.005269] [<c0311bb8>] (unwind_backtrace) from [<c030ca68>] (show_stack+0x10/0x14)
[    3.012976] [<c030ca68>] (show_stack) from [<c0ccba28>] (dump_stack+0xa4/0xb8)
[    3.020171] [<c0ccba28>] (dump_stack) from [<c0487fe0>] (check_bytes_and_report+0xcc/0x104)
[    3.028490] [<c0487fe0>] (check_bytes_and_report) from [<c04881d4>] (check_object+0x194/0x28c)
[    3.037072] [<c04881d4>] (check_object) from [<c048a658>] (free_debug_processing+0x12c/0x420)
[    3.045566] [<c048a658>] (free_debug_processing) from [<c048ac5c>] (__slab_free+0x310/0x4a0)
[    3.053974] [<c048ac5c>] (__slab_free) from [<c048b1c4>] (kfree+0x184/0x274)
[    3.060997] [<c048b1c4>] (kfree) from [<c08b861c>] (meson_nfc_exec_op+0x3b0/0x408)
[    3.068541] [<c08b861c>] (meson_nfc_exec_op) from [<c08a424c>] (nand_read_data_op+0xb8/0x154)
[    3.077034] [<c08a424c>] (nand_read_data_op) from [<c08ae394>] (nand_onfi_detect+0xdc/0x644)
[    3.085440] [<c08ae394>] (nand_onfi_detect) from [<c08aa4d0>] (nand_scan_with_ids+0x900/0x171c)
[    3.094111] [<c08aa4d0>] (nand_scan_with_ids) from [<c08b7a04>] (meson_nfc_probe+0x46c/0x694)
[    3.102606] [<c08b7a04>] (meson_nfc_probe) from [<c081f430>] (platform_drv_probe+0x48/0x98)
[    3.110924] [<c081f430>] (platform_drv_probe) from [<c081d4b8>] (really_probe+0x1e0/0x2cc)
[    3.119158] [<c081d4b8>] (really_probe) from [<c081d704>] (driver_probe_device+0x60/0x16c)
[    3.127393] [<c081d704>] (driver_probe_device) from [<c081d9b0>] (device_driver_attach+0x58/0x60)
[    3.136235] [<c081d9b0>] (device_driver_attach) from [<c081da10>] (__driver_attach+0x58/0xcc)
[    3.144734] [<c081da10>] (__driver_attach) from [<c081b87c>] (bus_for_each_dev+0x74/0xb4)
[    3.152879] [<c081b87c>] (bus_for_each_dev) from [<c081c8ec>] (bus_add_driver+0x1b8/0x1d8)
[    3.161113] [<c081c8ec>] (bus_add_driver) from [<c081e53c>] (driver_register+0x74/0x108)
[    3.169176] [<c081e53c>] (driver_register) from [<c0302f54>] (do_one_initcall+0x54/0x284)
[    3.177324] [<c0302f54>] (do_one_initcall) from [<c1001180>] (kernel_init_freeable+0x2d4/0x36c)
[    3.185991] [<c1001180>] (kernel_init_freeable) from [<c0ce2a38>] (kernel_init+0x8/0x110)
[    3.194139] [<c0ce2a38>] (kernel_init) from [<c03010f0>] (ret_from_fork+0x14/0x24)
[    3.201678] Exception stack(0xe983ffb0 to 0xe983fff8)
[    3.206707] ffa0:                                     00000000 00000000 00000000 00000000
[    3.214856] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    3.223003] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    3.229591] FIX kmalloc-64: Restoring 0x(ptrval)-0x(ptrval)=0xcc
[    3.229591] 
[    3.237097] FIX kmalloc-64: Object at 0x(ptrval) not freed
[    3.242545] meson_nfc_read_buf e95e6400 0x295e6400
[    3.247278] =============================================================================
[    3.255421] BUG kmalloc-64 (Tainted: G    B            ): Redzone overwritten
[    3.262527] -----------------------------------------------------------------------------
[    3.262527] 
[    3.272151] INFO: 0x(ptrval)-0x(ptrval). First byte 0xff instead of 0xcc
[    3.278827] INFO: Allocated in 0xfedfffff age=4294937620 cpu=0 pid=27697
[    3.285499]  0xffef6f7f
[    3.287926]  0xffffffff
[    3.290353]  0xffffffef
[    3.292780]  0xdf777fef
[    3.295207]  0xffffffff
[    3.297636] INFO: Freed in 0x80840052 age=4294937617 cpu=0 pid=33554432
[    3.304223] INFO: Slab 0x(ptrval) objects=25 used=5 fp=0x(ptrval) flags=0x10201
[    3.311504] INFO: Object 0x(ptrval) @offset=1024 fp=0x(ptrval)
[    3.311504] 
[    3.318786] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    3.327454] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    3.336122] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    3.344790] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    3.353458] Object (ptrval): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[    3.362040] Object (ptrval): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[    3.370621] Object (ptrval): ff ff ff ff ff ff ff ff ff fd fb bf ff ff ff ff  ................
[    3.379203] Object (ptrval): ef ff f7 ff ff ff ff ff fb ff fe ff ff ff ff ff  ................
[    3.387784] Redzone (ptrval): ff ff ff ff                                      ....
[    3.395412] Padding (ptrval): 00 00 00 00 02 00 00 00 01 00 00 02 e0 8b ff ff  ................
[    3.404080] Padding (ptrval): 00 00 00 00 00 00 00 00                          ........
[    3.412057] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G    B             5.1.0-rc1-00088-g406014e081b4-dirty #4272
[    3.422110] Hardware name: Amlogic Meson platform
[    3.426797] [<c0311bb8>] (unwind_backtrace) from [<c030ca68>] (show_stack+0x10/0x14)
[    3.434510] [<c030ca68>] (show_stack) from [<c0ccba28>] (dump_stack+0xa4/0xb8)
[    3.441705] [<c0ccba28>] (dump_stack) from [<c0487fe0>] (check_bytes_and_report+0xcc/0x104)
[    3.450026] [<c0487fe0>] (check_bytes_and_report) from [<c04881d4>] (check_object+0x194/0x28c)
[    3.458607] [<c04881d4>] (check_object) from [<c048a658>] (free_debug_processing+0x12c/0x420)
[    3.467102] [<c048a658>] (free_debug_processing) from [<c048ac5c>] (__slab_free+0x310/0x4a0)
[    3.475510] [<c048ac5c>] (__slab_free) from [<c048b1c4>] (kfree+0x184/0x274)
[    3.482531] [<c048b1c4>] (kfree) from [<c08b861c>] (meson_nfc_exec_op+0x3b0/0x408)
[    3.490074] [<c08b861c>] (meson_nfc_exec_op) from [<c08a424c>] (nand_read_data_op+0xb8/0x154)
[    3.498569] [<c08a424c>] (nand_read_data_op) from [<c08ae394>] (nand_onfi_detect+0xdc/0x644)
[    3.506976] [<c08ae394>] (nand_onfi_detect) from [<c08aa4d0>] (nand_scan_with_ids+0x900/0x171c)
[    3.515645] [<c08aa4d0>] (nand_scan_with_ids) from [<c08b7a04>] (meson_nfc_probe+0x46c/0x694)
[    3.524140] [<c08b7a04>] (meson_nfc_probe) from [<c081f430>] (platform_drv_probe+0x48/0x98)
[    3.532460] [<c081f430>] (platform_drv_probe) from [<c081d4b8>] (really_probe+0x1e0/0x2cc)
[    3.540695] [<c081d4b8>] (really_probe) from [<c081d704>] (driver_probe_device+0x60/0x16c)
[    3.548930] [<c081d704>] (driver_probe_device) from [<c081d9b0>] (device_driver_attach+0x58/0x60)
[    3.557771] [<c081d9b0>] (device_driver_attach) from [<c081da10>] (__driver_attach+0x58/0xcc)
[    3.566267] [<c081da10>] (__driver_attach) from [<c081b87c>] (bus_for_each_dev+0x74/0xb4)
[    3.574415] [<c081b87c>] (bus_for_each_dev) from [<c081c8ec>] (bus_add_driver+0x1b8/0x1d8)
[    3.582649] [<c081c8ec>] (bus_add_driver) from [<c081e53c>] (driver_register+0x74/0x108)
[    3.590711] [<c081e53c>] (driver_register) from [<c0302f54>] (do_one_initcall+0x54/0x284)
[    3.598859] [<c0302f54>] (do_one_initcall) from [<c1001180>] (kernel_init_freeable+0x2d4/0x36c)
[    3.607527] [<c1001180>] (kernel_init_freeable) from [<c0ce2a38>] (kernel_init+0x8/0x110)
[    3.615675] [<c0ce2a38>] (kernel_init) from [<c03010f0>] (ret_from_fork+0x14/0x24)
[    3.623214] Exception stack(0xe983ffb0 to 0xe983fff8)
[    3.628243] ffa0:                                     00000000 00000000 00000000 00000000
[    3.636392] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    3.644539] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    3.651126] FIX kmalloc-64: Restoring 0x(ptrval)-0x(ptrval)=0xcc
[    3.651126] 
[    3.658617] FIX kmalloc-64: Object at 0x(ptrval) not freed
[    3.664070] meson_nfc_read_buf e95e62c0 0x295e62c0
[    3.668825] =============================================================================
[    3.676957] BUG kmalloc-64 (Tainted: G    B            ): Redzone overwritten
[    3.684064] -----------------------------------------------------------------------------
[    3.684064] 
[    3.693687] INFO: 0x(ptrval)-0x(ptrval). First byte 0x0 instead of 0xcc
[    3.700277] INFO: Freed in 0xfe55620 age=536841280 cpu=4294967263 pid=-1048577
[    3.707469] INFO: Slab 0x(ptrval) objects=25 used=6 fp=0x(ptrval) flags=0x10201
[    3.714750] INFO: Object 0x(ptrval) @offset=704 fp=0x(ptrval)
[    3.714750] 
[    3.721945] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    3.730613] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    3.739281] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    3.747949] Redzone (ptrval): cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
[    3.756618] Object (ptrval): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[    3.765199] Object (ptrval): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[    3.773781] Object (ptrval): ff ff ff ff ff ff ff ff ff bf ff ff 7f ff ff ff  ................
[    3.782362] Object (ptrval): ff ff ff ff ff ff ff ff ff ff df ff 2f ff ff ff  ............/...
[    3.790944] Redzone (ptrval): 00 00 00 00                                      ....
[    3.798572] Padding (ptrval): ff ff ff ff ff ff d7 fe ff ff ff ff ff ff ff ff  ................
[    3.807240] Padding (ptrval): db ff ff ff 5e 7b ff ff                          ....^{..
[    3.815217] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G    B             5.1.0-rc1-00088-g406014e081b4-dirty #4272
[    3.825269] Hardware name: Amlogic Meson platform
[    3.829957] [<c0311bb8>] (unwind_backtrace) from [<c030ca68>] (show_stack+0x10/0x14)
[    3.837669] [<c030ca68>] (show_stack) from [<c0ccba28>] (dump_stack+0xa4/0xb8)
[    3.844865] [<c0ccba28>] (dump_stack) from [<c0487fe0>] (check_bytes_and_report+0xcc/0x104)
[    3.853186] [<c0487fe0>] (check_bytes_and_report) from [<c04881d4>] (check_object+0x194/0x28c)
[    3.861767] [<c04881d4>] (check_object) from [<c048a658>] (free_debug_processing+0x12c/0x420)
[    3.870262] [<c048a658>] (free_debug_processing) from [<c048ac5c>] (__slab_free+0x310/0x4a0)
[    3.878670] [<c048ac5c>] (__slab_free) from [<c048b1c4>] (kfree+0x184/0x274)
[    3.885691] [<c048b1c4>] (kfree) from [<c08b861c>] (meson_nfc_exec_op+0x3b0/0x408)
[    3.893233] [<c08b861c>] (meson_nfc_exec_op) from [<c08a424c>] (nand_read_data_op+0xb8/0x154)
[    3.901728] [<c08a424c>] (nand_read_data_op) from [<c08ae394>] (nand_onfi_detect+0xdc/0x644)
[    3.910135] [<c08ae394>] (nand_onfi_detect) from [<c08aa4d0>] (nand_scan_with_ids+0x900/0x171c)
[    3.918805] [<c08aa4d0>] (nand_scan_with_ids) from [<c08b7a04>] (meson_nfc_probe+0x46c/0x694)
[    3.927300] [<c08b7a04>] (meson_nfc_probe) from [<c081f430>] (platform_drv_probe+0x48/0x98)
[    3.935619] [<c081f430>] (platform_drv_probe) from [<c081d4b8>] (really_probe+0x1e0/0x2cc)
[    3.943854] [<c081d4b8>] (really_probe) from [<c081d704>] (driver_probe_device+0x60/0x16c)
[    3.952089] [<c081d704>] (driver_probe_device) from [<c081d9b0>] (device_driver_attach+0x58/0x60)
[    3.960931] [<c081d9b0>] (device_driver_attach) from [<c081da10>] (__driver_attach+0x58/0xcc)
[    3.969427] [<c081da10>] (__driver_attach) from [<c081b87c>] (bus_for_each_dev+0x74/0xb4)
[    3.977575] [<c081b87c>] (bus_for_each_dev) from [<c081c8ec>] (bus_add_driver+0x1b8/0x1d8)
[    3.985808] [<c081c8ec>] (bus_add_driver) from [<c081e53c>] (driver_register+0x74/0x108)
[    3.993871] [<c081e53c>] (driver_register) from [<c0302f54>] (do_one_initcall+0x54/0x284)
[    4.002019] [<c0302f54>] (do_one_initcall) from [<c1001180>] (kernel_init_freeable+0x2d4/0x36c)
[    4.010686] [<c1001180>] (kernel_init_freeable) from [<c0ce2a38>] (kernel_init+0x8/0x110)
[    4.018834] [<c0ce2a38>] (kernel_init) from [<c03010f0>] (ret_from_fork+0x14/0x24)
[    4.026373] Exception stack(0xe983ffb0 to 0xe983fff8)
[    4.031402] ffa0:                                     00000000 00000000 00000000 00000000
[    4.039552] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    4.047699] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    4.054286] FIX kmalloc-64: Restoring 0x(ptrval)-0x(ptrval)=0xcc
[    4.054286] 
[    4.061773] FIX kmalloc-64: Object at 0x(ptrval) not freed
[    4.067212] Could not find a valid ONFI parameter page, trying bit-wise majority to recover it
[    4.075833] ONFI parameter recovery failed, aborting
[    4.080773] meson_nfc_read_buf e95e7bc0 0x295e7bc0
[    4.085578] meson_nfc_read_buf e95e7bc0 0x295e7bc0
[    4.090336] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xde
[    4.096586] nand: Hynix NAND 8GiB 3,3V 8-bit
[    4.100847] nand: 8192 MiB, MLC, erase size: 4096 KiB, page size: 16384, OOB size: 1280
[    4.108873] meson_nfc_read_buf e95e7bc0 0x295e7bc0
[    4.116115] Unable to handle kernel paging request at virtual address fffffffe
[    4.120770] pgd = (ptrval)
[    4.123457] [fffffffe] *pgd=2bfde861, *pte=00000000, *ppte=00000000
[    4.129703] Internal error: Oops: 80000007 [#1] PREEMPT SMP ARM
[    4.135593] Modules linked in:
[    4.138630] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G    B             5.1.0-rc1-00088-g406014e081b4-dirty #4272
[    4.148681] Hardware name: Amlogic Meson platform
[    4.153364] PC is at 0xfffffffe
[    4.156491] LR is at __handle_irq_event_percpu+0x7c/0x2c4
[    4.161858] pc : [<fffffffe>]    lr : [<c037c878>]    psr: 600001b3
[    4.168099] sp : c1101e48  ip : ea001ee8  fp : c11c32a0
[    4.173300] r10: c11c32b4  r9 : c1101f10  r8 : c1101e90
[    4.178501] r7 : 00000033  r6 : 00000000  r5 : e9a566a8  r4 : e95e4f40
[    4.185002] r3 : ffffffff  r2 : c1108cb4  r1 : ffffffff  r0 : 00000033
[    4.191505] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA Thumb  Segment none
[    4.198872] Control: 10c5387d  Table: 0020404a  DAC: 00000051
[    4.204592] Process swapper/0 (pid: 0, stack limit = 0x(ptrval))
[    4.210573] Stack: (0xc1101e48 to 0xc1102000)
[    4.214910] 1e40:                   00000080 c11c3264 eaf86680 c11c32b4 ffffe000 e9a56640
[    4.223059] 1e60: c1108cb4 c11c2d03 eaf85580 c1108c88 e9a566a8 e9a56640 00000001 00000000
[    4.231207] 1e80: c1101f10 c021f540 c0f40060 c037caec 00000000 5b1da9e9 e9a56640 e9a566a8
[    4.239355] 1ea0: c11093a0 c037cb78 e9a56640 e9a566a8 c11093a0 c0380d90 c108d1b4 00000000
[    4.247503] 1ec0: 00000033 c037ba34 c108d1b4 c037c014 c11093a0 c11579c8 f080210c f0802100
[    4.255651] 1ee0: c1101f10 f0803100 c108c970 c06fe26c c030946c 60000013 ffffffff c1101f44
[    4.263799] 1f00: c1108c88 c1100000 c108c970 c0301a8c 00000000 0000a974 eaf8ade0 c031aee0
[    4.271948] 1f20: ffffe000 c1108cb4 c1108cf8 00000001 c1108c88 00000000 c108c970 c0f40060
[    4.280096] 1f40: c1108d9c c1101f60 c0309468 c030946c 60000013 ffffffff 00000051 00000000
[    4.288244] 1f60: ffffe000 c0356de4 00000000 c1108c88 00000041 5b1da9e9 c1112210 000000c9
[    4.296392] 1f80: 00000001 ffffffff c11d7640 c1108c88 00000041 c11d7640 c106da40 c0357168
[    4.304540] 1fa0: c11d7698 c1000e80 ffffffff ffffffff 00000000 c1000584 00000000 ebfffd00
[    4.312688] 1fc0: 00000000 c106da40 5b18a8e9 00000000 00000000 c1000330 00000051 10c0387d
[    4.320836] 1fe0: 00000f81 1f164000 414fc091 10c5387d 00000000 00000000 00000000 00000000
[    4.328989] [<c037c878>] (__handle_irq_event_percpu) from [<c037caec>] (handle_irq_event_percpu+0x2c/0x80)
[    4.338608] [<c037caec>] (handle_irq_event_percpu) from [<c037cb78>] (handle_irq_event+0x38/0x5c)
[    4.347451] [<c037cb78>] (handle_irq_event) from [<c0380d90>] (handle_fasteoi_irq+0xcc/0x17c)
[    4.355943] [<c0380d90>] (handle_fasteoi_irq) from [<c037ba34>] (generic_handle_irq+0x24/0x34)
[    4.364525] [<c037ba34>] (generic_handle_irq) from [<c037c014>] (__handle_domain_irq+0x7c/0xec)
[    4.373196] [<c037c014>] (__handle_domain_irq) from [<c06fe26c>] (gic_handle_irq+0x4c/0x90)
[    4.381515] [<c06fe26c>] (gic_handle_irq) from [<c0301a8c>] (__irq_svc+0x6c/0xa8)
[    4.388966] Exception stack(0xc1101f10 to 0xc1101f58)
[    4.393995] 1f00:                                     00000000 0000a974 eaf8ade0 c031aee0
[    4.402145] 1f20: ffffe000 c1108cb4 c1108cf8 00000001 c1108c88 00000000 c108c970 c0f40060
[    4.410292] 1f40: c1108d9c c1101f60 c0309468 c030946c 60000013 ffffffff
[    4.416883] [<c0301a8c>] (__irq_svc) from [<c030946c>] (arch_cpu_idle+0x38/0x3c)
[    4.424252] [<c030946c>] (arch_cpu_idle) from [<c0356de4>] (do_idle+0x1e4/0x290)
[    4.431618] [<c0356de4>] (do_idle) from [<c0357168>] (cpu_startup_entry+0x18/0x1c)
[    4.439158] [<c0357168>] (cpu_startup_entry) from [<c1000e80>] (start_kernel+0x45c/0x488)
[    4.447305] [<c1000e80>] (start_kernel) from [<00000000>] (  (null))
[    4.453631] Code: bad PC value
[    4.456674] ---[ end trace eaad995c3018501e ]---
[    4.461259] Kernel panic - not syncing: Fatal exception in interrupt
[    4.467592] CPU3: stopping
[    4.470277] CPU: 3 PID: 0 Comm: swapper/3 Tainted: G    B D           5.1.0-rc1-00088-g406014e081b4-dirty #4272
[    4.480328] Hardware name: Amlogic Meson platform
[    4.485017] [<c0311bb8>] (unwind_backtrace) from [<c030ca68>] (show_stack+0x10/0x14)
[    4.492729] [<c030ca68>] (show_stack) from [<c0ccba28>] (dump_stack+0xa4/0xb8)
[    4.499924] [<c0ccba28>] (dump_stack) from [<c03100d4>] (handle_IPI+0x418/0x444)
[    4.507292] [<c03100d4>] (handle_IPI) from [<c06fe2ac>] (gic_handle_irq+0x8c/0x90)
[    4.514832] [<c06fe2ac>] (gic_handle_irq) from [<c0301a8c>] (__irq_svc+0x6c/0xa8)
[    4.522283] Exception stack(0xe987df60 to 0xe987dfa8)
[    4.527315] df60: 00000000 00003658 eafc0de0 c031aee0 ffffe000 c1108cb4 c1108cf8 00000008
[    4.535462] df80: c1108c88 00000000 c108c970 c0f40060 00000001 e987dfb0 c0309468 c030946c
[    4.543607] dfa0: 600c0013 ffffffff
[    4.547079] [<c0301a8c>] (__irq_svc) from [<c030946c>] (arch_cpu_idle+0x38/0x3c)
[    4.554447] [<c030946c>] (arch_cpu_idle) from [<c0356de4>] (do_idle+0x1e4/0x290)
[    4.561814] [<c0356de4>] (do_idle) from [<c0357168>] (cpu_startup_entry+0x18/0x1c)
[    4.569355] [<c0357168>] (cpu_startup_entry) from [<003026ac>] (0x3026ac)
[    4.576113] CPU1: stopping
[    4.578803] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G    B D           5.1.0-rc1-00088-g406014e081b4-dirty #4272
[    4.588855] Hardware name: Amlogic Meson platform
[    4.593543] [<c0311bb8>] (unwind_backtrace) from [<c030ca68>] (show_stack+0x10/0x14)
[    4.601254] [<c030ca68>] (show_stack) from [<c0ccba28>] (dump_stack+0xa4/0xb8)
[    4.608449] [<c0ccba28>] (dump_stack) from [<c03100d4>] (handle_IPI+0x418/0x444)
[    4.615817] [<c03100d4>] (handle_IPI) from [<c06fe2ac>] (gic_handle_irq+0x8c/0x90)
[    4.623358] [<c06fe2ac>] (gic_handle_irq) from [<c0301a8c>] (__irq_svc+0x6c/0xa8)
[    4.630809] Exception stack(0xe9877f60 to 0xe9877fa8)
[    4.635841] 7f60: 00000000 00005464 eaf9cde0 c031aee0 ffffe000 c1108cb4 c1108cf8 00000002
[    4.643989] 7f80: c1108c88 00000000 c108c970 c0f40060 00000001 e9877fb0 c0309468 c030946c
[    4.652133] 7fa0: 600c0013 ffffffff
[    4.655605] [<c0301a8c>] (__irq_svc) from [<c030946c>] (arch_cpu_idle+0x38/0x3c)
[    4.662973] [<c030946c>] (arch_cpu_idle) from [<c0356de4>] (do_idle+0x1e4/0x290)
[    4.670341] [<c0356de4>] (do_idle) from [<c0357168>] (cpu_startup_entry+0x18/0x1c)
[    4.677881] [<c0357168>] (cpu_startup_entry) from [<003026ac>] (0x3026ac)
[    4.684640] CPU2: stopping
[    4.687329] CPU: 2 PID: 0 Comm: swapper/2 Tainted: G    B D           5.1.0-rc1-00088-g406014e081b4-dirty #4272
[    4.697381] Hardware name: Amlogic Meson platform
[    4.702069] [<c0311bb8>] (unwind_backtrace) from [<c030ca68>] (show_stack+0x10/0x14)
[    4.709781] [<c030ca68>] (show_stack) from [<c0ccba28>] (dump_stack+0xa4/0xb8)
[    4.716975] [<c0ccba28>] (dump_stack) from [<c03100d4>] (handle_IPI+0x418/0x444)
[    4.724344] [<c03100d4>] (handle_IPI) from [<c06fe2ac>] (gic_handle_irq+0x8c/0x90)
[    4.731884] [<c06fe2ac>] (gic_handle_irq) from [<c0301a8c>] (__irq_svc+0x6c/0xa8)
[    4.739336] Exception stack(0xe987bf60 to 0xe987bfa8)
[    4.744367] bf60: 00000000 00009844 eafaede0 c031aee0 ffffe000 c1108cb4 c1108cf8 00000004
[    4.752515] bf80: c1108c88 00000000 c108c970 c0f40060 eafaab34 e987bfb0 c0309468 c030946c
[    4.760660] bfa0: 600c0013 ffffffff
[    4.764132] [<c0301a8c>] (__irq_svc) from [<c030946c>] (arch_cpu_idle+0x38/0x3c)
[    4.771499] [<c030946c>] (arch_cpu_idle) from [<c0356de4>] (do_idle+0x1e4/0x290)
[    4.778867] [<c0356de4>] (do_idle) from [<c0357168>] (cpu_startup_entry+0x18/0x1c)
[    4.786408] [<c0357168>] (cpu_startup_entry) from [<003026ac>] (0x3026ac)
[    4.793171] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---

[-- Attachment #3: Type: text/plain, Size: 167 bytes --]

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-03-22 21:07   ` Martin Blumenstingl
@ 2019-03-25 10:04     ` Liang Yang
  2019-03-25 18:31       ` Martin Blumenstingl
  0 siblings, 1 reply; 13+ messages in thread
From: Liang Yang @ 2019-03-25 10:04 UTC (permalink / raw)
  To: Martin Blumenstingl, Matthew Wilcox
  Cc: mhocko, linux, linux-kernel, rppt, linux-mm, linux-mtd,
	linux-amlogic, akpm, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 3161 bytes --]

Hi Martin,

On 2019/3/23 5:07, Martin Blumenstingl wrote:
> Hi Matthew,
> 
> On Thu, Mar 21, 2019 at 10:44 PM Matthew Wilcox <willy@infradead.org> wrote:
>>
>> On Thu, Mar 21, 2019 at 09:17:34PM +0100, Martin Blumenstingl wrote:
>>> Hello,
>>>
>>> I am experiencing the following crash:
>>>    ------------[ cut here ]------------
>>>    kernel BUG at mm/slub.c:3950!
>>
>>          if (unlikely(!PageSlab(page))) {
>>                  BUG_ON(!PageCompound(page));
>>
>> You called kfree() on the address of a page which wasn't allocated by slab.
>>
>>> I have traced this crash to the kfree() in meson_nfc_read_buf().
>>> my observation is as follows:
>>> - meson_nfc_read_buf() is called 7 times without any crash, the
>>> kzalloc() call returns 0xe9e6c600 (virtual address) / 0x29e6c600
>>> (physical address)
>>> - the eight time meson_nfc_read_buf() is called kzalloc() call returns
>>> 0xee39a38b (virtual address) / 0x2e39a38b (physical address) and the
>>> final kfree() crashes
>>> - changing the size in the kzalloc() call from PER_INFO_BYTE (= 8) to
>>> PAGE_SIZE works around that crash
>>
>> I suspect you're doing something which corrupts memory.  Overrunning
>> the end of your allocation or something similar.  Have you tried KASAN
>> or even the various slab debugging (eg redzones)?
> KASAN is not available on 32-bit ARM. there was some progress last
> year [0] but it didn't make it into mainline. I tried to make the
> patches apply again and got it to compile (and my kernel is still
> booting) but I have no idea if it's still working. for anyone
> interested, my patches are here: [1] (I consider this a HACK because I
> don't know anything about the code which is being touched in the
> patches, I only made it compile)
> 
> SLAB debugging (redzones) were a great hint, thank you very much for
> that Matthew! I enabled:
>    CONFIG_SLUB_DEBUG=y
>    CONFIG_SLUB_DEBUG_ON=y
> and with that I now get "BUG kmalloc-64 (Not tainted): Redzone
> overwritten" (a larger kernel log extract is attached).
> 
> I'm starting to wonder if the NAND controller (hardware) writes more
> than 8 bytes.
> some context: the "info" buffer allocated in meson_nfc_read_buf is
> then passed to the NAND controller IP (after using dma_map_single).
> 
> Liang, how does the NAND controller know that it only has to send
> PER_INFO_BYTE (= 8) bytes when called from meson_nfc_read_buf? all
> other callers of meson_nfc_dma_buffer_setup (which passes the info
> buffer to the hardware) are using (nand->ecc.steps * PER_INFO_BYTE)
> bytes?
> 
NFC_CMD_N2M and CMDRWGEN are different commands. CMDRWGEN needs to set 
the ecc page size (1KB or 512B) and Pages(2, 4, 8, ...), so 
PER_INFO_BYTE(= 8) bytes for each ecc page.
I have never used NFC_CMD_N2M to transfer data before, because it is 
very low efficient. And I do a experiment with the attachment and find 
on overwritten on my meson axg platform.

Martin, I would appreciate it very much if you would try the attachment 
on your meson m8b platform.

> 
> Regards
> Martin
> 
> 
> [0] https://lore.kernel.org/patchwork/cover/913212/
> [1] https://github.com/xdarklight/linux/tree/arm-kasan-hack-v5.1-rc1
> 

[-- Attachment #2: nand_debug.diff --]
[-- Type: text/plain, Size: 1104 bytes --]

diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c
old mode 100644
new mode 100755
index e858d58..905ef39
--- a/drivers/mtd/nand/raw/meson_nand.c
+++ b/drivers/mtd/nand/raw/meson_nand.c
@@ -527,11 +527,12 @@ static void meson_nfc_dma_buffer_release(struct nand_chip *nand,
 static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len)
 {
 	struct meson_nfc *nfc = nand_get_controller_data(nand);
-	int ret = 0;
+	int ret = 0, i;
 	u32 cmd;
 	u8 *info;
 
-	info = kzalloc(PER_INFO_BYTE, GFP_KERNEL);
+	info = kzalloc(2 * PER_INFO_BYTE, GFP_KERNEL);
+	memset(info, 0xFD, 2 * PER_INFO_BYTE);
 	ret = meson_nfc_dma_buffer_setup(nand, buf, len, info,
 					 PER_INFO_BYTE, DMA_FROM_DEVICE);
 	if (ret)
@@ -543,6 +544,12 @@ static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len)
 	meson_nfc_drain_cmd(nfc);
 	meson_nfc_wait_cmd_finish(nfc, 1000);
 	meson_nfc_dma_buffer_release(nand, len, PER_INFO_BYTE, DMA_FROM_DEVICE);
+
+	for (i = 0; i < 2 * PER_INFO_BYTE; i++){
+		printk("0x%x ", info[i]);
+	}
+	printk("\n");
+
 	kfree(info);
 
 	return ret;

[-- Attachment #3: Type: text/plain, Size: 167 bytes --]

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-03-25 10:04     ` Liang Yang
@ 2019-03-25 18:31       ` Martin Blumenstingl
  2019-03-27  8:53         ` Liang Yang
  0 siblings, 1 reply; 13+ messages in thread
From: Martin Blumenstingl @ 2019-03-25 18:31 UTC (permalink / raw)
  To: Liang Yang
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 4426 bytes --]

Hi Liang,

On Mon, Mar 25, 2019 at 11:03 AM Liang Yang <liang.yang@amlogic.com> wrote:
>
> Hi Martin,
>
> On 2019/3/23 5:07, Martin Blumenstingl wrote:
> > Hi Matthew,
> >
> > On Thu, Mar 21, 2019 at 10:44 PM Matthew Wilcox <willy@infradead.org> wrote:
> >>
> >> On Thu, Mar 21, 2019 at 09:17:34PM +0100, Martin Blumenstingl wrote:
> >>> Hello,
> >>>
> >>> I am experiencing the following crash:
> >>>    ------------[ cut here ]------------
> >>>    kernel BUG at mm/slub.c:3950!
> >>
> >>          if (unlikely(!PageSlab(page))) {
> >>                  BUG_ON(!PageCompound(page));
> >>
> >> You called kfree() on the address of a page which wasn't allocated by slab.
> >>
> >>> I have traced this crash to the kfree() in meson_nfc_read_buf().
> >>> my observation is as follows:
> >>> - meson_nfc_read_buf() is called 7 times without any crash, the
> >>> kzalloc() call returns 0xe9e6c600 (virtual address) / 0x29e6c600
> >>> (physical address)
> >>> - the eight time meson_nfc_read_buf() is called kzalloc() call returns
> >>> 0xee39a38b (virtual address) / 0x2e39a38b (physical address) and the
> >>> final kfree() crashes
> >>> - changing the size in the kzalloc() call from PER_INFO_BYTE (= 8) to
> >>> PAGE_SIZE works around that crash
> >>
> >> I suspect you're doing something which corrupts memory.  Overrunning
> >> the end of your allocation or something similar.  Have you tried KASAN
> >> or even the various slab debugging (eg redzones)?
> > KASAN is not available on 32-bit ARM. there was some progress last
> > year [0] but it didn't make it into mainline. I tried to make the
> > patches apply again and got it to compile (and my kernel is still
> > booting) but I have no idea if it's still working. for anyone
> > interested, my patches are here: [1] (I consider this a HACK because I
> > don't know anything about the code which is being touched in the
> > patches, I only made it compile)
> >
> > SLAB debugging (redzones) were a great hint, thank you very much for
> > that Matthew! I enabled:
> >    CONFIG_SLUB_DEBUG=y
> >    CONFIG_SLUB_DEBUG_ON=y
> > and with that I now get "BUG kmalloc-64 (Not tainted): Redzone
> > overwritten" (a larger kernel log extract is attached).
> >
> > I'm starting to wonder if the NAND controller (hardware) writes more
> > than 8 bytes.
> > some context: the "info" buffer allocated in meson_nfc_read_buf is
> > then passed to the NAND controller IP (after using dma_map_single).
> >
> > Liang, how does the NAND controller know that it only has to send
> > PER_INFO_BYTE (= 8) bytes when called from meson_nfc_read_buf? all
> > other callers of meson_nfc_dma_buffer_setup (which passes the info
> > buffer to the hardware) are using (nand->ecc.steps * PER_INFO_BYTE)
> > bytes?
> >
> NFC_CMD_N2M and CMDRWGEN are different commands. CMDRWGEN needs to set
> the ecc page size (1KB or 512B) and Pages(2, 4, 8, ...), so
> PER_INFO_BYTE(= 8) bytes for each ecc page.
> I have never used NFC_CMD_N2M to transfer data before, because it is
> very low efficient. And I do a experiment with the attachment and find
> on overwritten on my meson axg platform.
>
> Martin, I would appreciate it very much if you would try the attachment
> on your meson m8b platform.
thank you for your debug patch! on my board 2 * PER_INFO_BYTE is not enough.
I took the idea from your patch and adapted it so I could print a
buffer with 256 bytes (which seems to be "big enough" for my board).
see the attached, modified patch

in the output I see that sometimes the first 32 bytes are not touched
by the controller, but everything beyond 32 bytes is modified in the
info buffer.

I also tried to increase the buffer size to 512, but that didn't make
a difference (I never saw any info buffer modification beyond 256
bytes).

also I just noticed that I didn't give you much details on my NAND chip yet.
from Amlogic vendor u-boot on Meson8m2 (all my Meson8b boards have
eMMC flash, but I believe the NAND controller on Meson8 to GXBB is
identical):
  m8m2_n200_v1#amlnf chipinfo
  flash  info
  name:B revision 20nm NAND 8GiB H27UCG8T2B, id:ad de 94 eb 74 44  0  0
  pagesize:0x4000, blocksize:0x400000, oobsize:0x500, chipsize:0x2000,
    option:0x8, T_REA:16, T_RHOH:15
  hw controller info
  chip_num:1, onfi_mode:0, page_shift:14, block_shift:22, option:0xc2
  ecc_unit:1024, ecc_bytes:70, ecc_steps:16, ecc_max:40
  bch_mode:5, user_mode:2, oobavail:32, oobtail:64384


Regards

Martin

[-- Attachment #2: debug-256-buffer-output.txt --]
[-- Type: text/plain, Size: 8077 bytes --]

...
[    2.716885] 00000000: 0000 8005 2800 2945 fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.720464] 00000020: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.729689] 00000040: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.738847] 00000060: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.748065] 00000080: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.757228] 000000a0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.766404] 000000c0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.775602] 000000e0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.784780] 
[    2.786306] 00000000: 0000 801b 2800 2945 fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.795455] 00000020: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.804638] 00000040: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.813828] 00000060: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.823014] 00000080: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.832203] 000000a0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.841390] 000000c0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.850580] 000000e0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.859759] 
[    2.861303] 00000000: 0000 8011 3d00 295e fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.870435] 00000020: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.879618] 00000040: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.888812] 00000060: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.897996] 00000080: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.907184] 000000a0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.916364] 000000c0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.925559] 000000e0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.934741] 
[    2.936367] 00000000: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    2.945413] 00000020: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    2.954600] 00000040: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    2.963803] 00000060: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    2.972978] 00000080: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    2.982163] 000000a0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    2.991352] 000000c0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.000539] 000000e0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b a56b
[    3.009722] 
[    3.011233] 00000000: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.020390] 00000020: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.029580] 00000040: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.038766] 00000060: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.047971] 00000080: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.057145] 000000a0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.066325] 000000c0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.075521] 000000e0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b a56b
[    3.084700] 
[    3.086213] 00000000: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.095373] 00000020: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.104558] 00000040: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.113748] 00000060: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.122934] 00000080: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.132124] 000000a0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.141311] 000000c0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b
[    3.150505] 000000e0: 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b 6b6b a56b
[    3.159681] 
[    3.161171] Could not find a valid ONFI parameter page, trying bit-wise majority to recover it
[    3.169786] ONFI parameter recovery failed, aborting
[    3.174740] 00000000: 0000 8010 3d00 295e fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.183877] 00000020: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.193064] 00000040: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.202249] 00000060: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.211439] 00000080: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.220626] 000000a0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.229815] 000000c0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.239002] 000000e0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.248184] 
[    3.249743] 00000000: 0000 8010 22c0 295e fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.258857] 00000020: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.268044] 00000040: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.277231] 00000060: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.286411] 00000080: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.295607] 000000a0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.304794] 000000c0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.313984] 000000e0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.323163] 
[    3.324657] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xde
[    3.330968] nand: Hynix NAND 8GiB 3,3V 8-bit
[    3.335210] nand: 8192 MiB, MLC, erase size: 4096 KiB, page size: 16384, OOB size: 1280
[    3.343274] 00000000: 0000 8010 2400 295e fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.352390] 00000020: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.361572] 00000040: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.370762] 00000060: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.379963] 00000080: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.389140] 000000a0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.398326] 000000c0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.407519] 000000e0: fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd fdfd
[    3.416695] 
...

[-- Attachment #3: nand_debug_martin.patch --]
[-- Type: application/x-patch, Size: 986 bytes --]

[-- Attachment #4: Type: text/plain, Size: 167 bytes --]

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-03-25 18:31       ` Martin Blumenstingl
@ 2019-03-27  8:53         ` Liang Yang
  2019-03-28 18:03           ` Martin Blumenstingl
  0 siblings, 1 reply; 13+ messages in thread
From: Liang Yang @ 2019-03-27  8:53 UTC (permalink / raw)
  To: Martin Blumenstingl
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 5513 bytes --]

Hi Martin,

Thanks a lot.
On 2019/3/26 2:31, Martin Blumenstingl wrote:
> Hi Liang,
> 
> On Mon, Mar 25, 2019 at 11:03 AM Liang Yang <liang.yang@amlogic.com> wrote:
>>
>> Hi Martin,
>>
>> On 2019/3/23 5:07, Martin Blumenstingl wrote:
>>> Hi Matthew,
>>>
>>> On Thu, Mar 21, 2019 at 10:44 PM Matthew Wilcox <willy@infradead.org> wrote:
>>>>
>>>> On Thu, Mar 21, 2019 at 09:17:34PM +0100, Martin Blumenstingl wrote:
>>>>> Hello,
>>>>>
>>>>> I am experiencing the following crash:
>>>>>     ------------[ cut here ]------------
>>>>>     kernel BUG at mm/slub.c:3950!
>>>>
>>>>           if (unlikely(!PageSlab(page))) {
>>>>                   BUG_ON(!PageCompound(page));
>>>>
>>>> You called kfree() on the address of a page which wasn't allocated by slab.
>>>>
>>>>> I have traced this crash to the kfree() in meson_nfc_read_buf().
>>>>> my observation is as follows:
>>>>> - meson_nfc_read_buf() is called 7 times without any crash, the
>>>>> kzalloc() call returns 0xe9e6c600 (virtual address) / 0x29e6c600
>>>>> (physical address)
>>>>> - the eight time meson_nfc_read_buf() is called kzalloc() call returns
>>>>> 0xee39a38b (virtual address) / 0x2e39a38b (physical address) and the
>>>>> final kfree() crashes
>>>>> - changing the size in the kzalloc() call from PER_INFO_BYTE (= 8) to
>>>>> PAGE_SIZE works around that crash
>>>>
>>>> I suspect you're doing something which corrupts memory.  Overrunning
>>>> the end of your allocation or something similar.  Have you tried KASAN
>>>> or even the various slab debugging (eg redzones)?
>>> KASAN is not available on 32-bit ARM. there was some progress last
>>> year [0] but it didn't make it into mainline. I tried to make the
>>> patches apply again and got it to compile (and my kernel is still
>>> booting) but I have no idea if it's still working. for anyone
>>> interested, my patches are here: [1] (I consider this a HACK because I
>>> don't know anything about the code which is being touched in the
>>> patches, I only made it compile)
>>>
>>> SLAB debugging (redzones) were a great hint, thank you very much for
>>> that Matthew! I enabled:
>>>     CONFIG_SLUB_DEBUG=y
>>>     CONFIG_SLUB_DEBUG_ON=y
>>> and with that I now get "BUG kmalloc-64 (Not tainted): Redzone
>>> overwritten" (a larger kernel log extract is attached).
>>>
>>> I'm starting to wonder if the NAND controller (hardware) writes more
>>> than 8 bytes.
>>> some context: the "info" buffer allocated in meson_nfc_read_buf is
>>> then passed to the NAND controller IP (after using dma_map_single).
>>>
>>> Liang, how does the NAND controller know that it only has to send
>>> PER_INFO_BYTE (= 8) bytes when called from meson_nfc_read_buf? all
>>> other callers of meson_nfc_dma_buffer_setup (which passes the info
>>> buffer to the hardware) are using (nand->ecc.steps * PER_INFO_BYTE)
>>> bytes?
>>>
>> NFC_CMD_N2M and CMDRWGEN are different commands. CMDRWGEN needs to set
>> the ecc page size (1KB or 512B) and Pages(2, 4, 8, ...), so
>> PER_INFO_BYTE(= 8) bytes for each ecc page.
>> I have never used NFC_CMD_N2M to transfer data before, because it is
>> very low efficient. And I do a experiment with the attachment and find
>> on overwritten on my meson axg platform.
>>
>> Martin, I would appreciate it very much if you would try the attachment
>> on your meson m8b platform.
> thank you for your debug patch! on my board 2 * PER_INFO_BYTE is not enough.
> I took the idea from your patch and adapted it so I could print a
> buffer with 256 bytes (which seems to be "big enough" for my board).
it only needs PER_INFO_BYTE (= 8) bytes, because NFC_CMD_N2M don't set 
*Pages*, that is not like CMDRWGEN which needs Pages*PER_INFO_BYTE (= 8) 
  bytes when setting *Pages* parameter. I have been thinking that 
NFC_CMD_N2M  only occupis PER_INFO_BYTE (= 8) bytes. And i have tried to 
not set the info address, the machine would crash.
> see the attached, modified patch
> 
> in the output I see that sometimes the first 32 bytes are not touched
> by the controller, but everything beyond 32 bytes is modified in the
> info buffer.
> 
it really makes sense that the controller sometimes fills the space 
beyond the first 8 bytes. However i expect the controller should only 
take the first 8 bytes when using NFC_CMD_N2M.
> I also tried to increase the buffer size to 512, but that didn't make
> a difference (I never saw any info buffer modification beyond 256
> bytes).
> 
> also I just noticed that I didn't give you much details on my NAND chip yet.
> from Amlogic vendor u-boot on Meson8m2 (all my Meson8b boards have
> eMMC flash, but I believe the NAND controller on Meson8 to GXBB is
> identical):
>    m8m2_n200_v1#amlnf chipinfo
>    flash  info
>    name:B revision 20nm NAND 8GiB H27UCG8T2B, id:ad de 94 eb 74 44  0  0
>    pagesize:0x4000, blocksize:0x400000, oobsize:0x500, chipsize:0x2000,
>      option:0x8, T_REA:16, T_RHOH:15
>    hw controller info
>    chip_num:1, onfi_mode:0, page_shift:14, block_shift:22, option:0xc2
>    ecc_unit:1024, ecc_bytes:70, ecc_steps:16, ecc_max:40
>    bch_mode:5, user_mode:2, oobavail:32, oobtail:64384
> 
I don't think it is caused by a different NAND type, but i have followed 
the some test on my GXL platform. we can see the result from the 
attachment. By the way, i don't find any information about this on meson 
NFC datasheet, so i will ask our VLSI.
Martin, May you reproduce it with the new patch on meson8b platform ? I 
need a more clear and easier compared log like gxl.txt. Thanks.

> 
> Regards
> 
> Martin
> 

[-- Attachment #2: nand_debug.diff --]
[-- Type: text/plain, Size: 3399 bytes --]

diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c
old mode 100644
new mode 100755
index e858d58..4f2d709
--- a/drivers/mtd/nand/raw/meson_nand.c
+++ b/drivers/mtd/nand/raw/meson_nand.c
@@ -527,11 +527,12 @@ static void meson_nfc_dma_buffer_release(struct nand_chip *nand,
 static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len)
 {
 	struct meson_nfc *nfc = nand_get_controller_data(nand);
-	int ret = 0;
+	int ret = 0, i;
 	u32 cmd;
 	u8 *info;
 
-	info = kzalloc(PER_INFO_BYTE, GFP_KERNEL);
+	info = kzalloc(256, GFP_KERNEL);
+	memset(info, 0xFD, 256);
 	ret = meson_nfc_dma_buffer_setup(nand, buf, len, info,
 					 PER_INFO_BYTE, DMA_FROM_DEVICE);
 	if (ret)
@@ -543,6 +544,14 @@ static int meson_nfc_read_buf(struct nand_chip *nand, u8 *buf, int len)
 	meson_nfc_drain_cmd(nfc);
 	meson_nfc_wait_cmd_finish(nfc, 1000);
 	meson_nfc_dma_buffer_release(nand, len, PER_INFO_BYTE, DMA_FROM_DEVICE);
+
+	for (i = 0; i < 256; i++) {
+		if (i > 0 && i % 16 == 0)
+			pr_info("");
+		printk(KERN_CONT "0x%x ", info[i]);
+	}
+	pr_info("");
+
 	kfree(info);
 
 	return ret;
@@ -899,6 +908,8 @@ static int meson_nfc_exec_op(struct nand_chip *nand,
 	int i;
 
 	meson_nfc_select_chip(nand, op->cs);
+	
+	printk("Executing operation [%d instructions]:", op->ninstrs);
 	for (op_id = 0; op_id < op->ninstrs; op_id++) {
 		instr = &op->instrs[op_id];
 		delay_idle = DIV_ROUND_UP(PSEC_TO_NSEC(instr->delay_ns),
@@ -906,6 +917,7 @@ static int meson_nfc_exec_op(struct nand_chip *nand,
 					  NFC_CLK_CYCLE);
 		switch (instr->type) {
 		case NAND_OP_CMD_INSTR:
+			printk("  ->CMD      [0x%02x]", instr->ctx.cmd.opcode);
 			cmd = nfc->param.chip_select | NFC_CMD_CLE;
 			cmd |= instr->ctx.cmd.opcode & 0xff;
 			writel(cmd, nfc->reg_base + NFC_REG_CMD);
@@ -913,6 +925,7 @@ static int meson_nfc_exec_op(struct nand_chip *nand,
 			break;
 
 		case NAND_OP_ADDR_INSTR:
+			printk("  ->ADDR     [%d cyc]", instr->ctx.addr.naddrs);
 			for (i = 0; i < instr->ctx.addr.naddrs; i++) {
 				cmd = nfc->param.chip_select | NFC_CMD_ALE;
 				cmd |= instr->ctx.addr.addrs[i] & 0xff;
@@ -922,6 +935,9 @@ static int meson_nfc_exec_op(struct nand_chip *nand,
 			break;
 
 		case NAND_OP_DATA_IN_INSTR:
+			printk("  ->DATA_IN  [%d B%s]\n", instr->ctx.data.len,
+				 instr->ctx.data.force_8bit ?
+				 ", force 8-bit" : "");
 			buf = meson_nand_op_get_dma_safe_input_buf(instr);
 			if (!buf)
 				return -ENOMEM;
@@ -930,6 +946,9 @@ static int meson_nfc_exec_op(struct nand_chip *nand,
 			break;
 
 		case NAND_OP_DATA_OUT_INSTR:
+			printk("  ->DATA_OUT [%d B%s]", instr->ctx.data.len,
+				 instr->ctx.data.force_8bit ?
+				 ", force 8-bit" : "");
 			buf = meson_nand_op_get_dma_safe_output_buf(instr);
 			if (!buf)
 				return -ENOMEM;
@@ -938,6 +957,8 @@ static int meson_nfc_exec_op(struct nand_chip *nand,
 			break;
 
 		case NAND_OP_WAITRDY_INSTR:
+			printk("  ->WAITRDY  [max %d ms]",
+				 instr->ctx.waitrdy.timeout_ms);
 			meson_nfc_queue_rb(nfc, instr->ctx.waitrdy.timeout_ms);
 			if (instr->delay_ns)
 				meson_nfc_cmd_idle(nfc, delay_idle);
@@ -1191,6 +1212,8 @@ static int meson_nand_attach_chip(struct nand_chip *nand)
 	if (ret)
 		return -EINVAL;
 
+	mtd_set_ooblayout(mtd, &meson_ooblayout_ops);
+	
 	nand->ecc.mode = NAND_ECC_HW;
 	nand->ecc.write_page_raw = meson_nfc_write_page_raw;
 	nand->ecc.write_page = meson_nfc_write_page_hwecc;

[-- Attachment #3: gxl.txt --]
[-- Type: text/plain, Size: 26417 bytes --]

[    0.978447] loop: module loaded
[    1.000143] Executing operation [2 instructions]:
[    1.000147]   ->CMD      [0xff]
[    1.000173]   ->WAITRDY  [max 250 ms]
[    1.002334] Executing operation [3 instructions]:
[    1.005953]   ->CMD      [0x90]
[    1.010610]   ->ADDR     [1 cyc]
[    1.013715]   ->DATA_IN  [2 B, force 8-bit]
[    1.021079] 0x55 0xaa 0x5 0x80 0x38 0xb6 0xc4 0x74 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.029329] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.037692] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.046058] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.054424] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.062790] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.071156] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.079523] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.087889] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.096255] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.104621] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.112987] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.121354] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.129720] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.138087] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.146459] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.154822] Executing operation [3 instructions]:
[    1.154823]   ->CMD      [0x90]
[    1.159477]   ->ADDR     [1 cyc]
[    1.162577]   ->DATA_IN  [8 B, force 8-bit]
[    1.169934] 0x55 0xaa 0x1e 0x80 0x38 0xb6 0xc4 0x74 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.178282] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.186650] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.195012] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.203378] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.211744] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.220110] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.228477] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.236843] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.245209] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.253575] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.261941] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.270308] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.278674] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.287041] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.295411] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.303779] Executing operation [3 instructions]:
[    1.303780]   ->CMD      [0x90]
[    1.308431]   ->ADDR     [1 cyc]
[    1.311536]   ->DATA_IN  [4 B, force 8-bit]
[    1.318888] 0x55 0xaa 0x11 0x80 0x80 0xa6 0x24 0x74 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.327236] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.335601] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.343966] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.352332] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.360699] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.369065] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.377431] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.385797] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.394164] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.402530] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.410896] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.419262] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.427629] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.435999] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.444366] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.452731] Executing operation [3 instructions]:
[    1.452733]   ->CMD      [0xec]
[    1.457386]   ->ADDR     [1 cyc]
[    1.460490]   ->WAITRDY  [max 200000 ms]
[    1.463691] Executing operation [1 instructions]:
[    1.467563]   ->DATA_IN  [256 B, force 8-bit]
[    1.476535] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.484899] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.493265] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.501631] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.509997] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.518363] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.526729] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.535096] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.543462] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.551828] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.560194] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.568561] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.576927] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.585293] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.593660] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.602026] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.610407] Executing operation [1 instructions]:
[    1.610409]   ->DATA_IN  [256 B, force 8-bit]
[    1.619365] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.627729] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.636095] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.644461] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.652827] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.661193] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.669560] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.677926] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.686292] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.694658] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.703028] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.711391] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.719757] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.728123] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.736489] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.744856] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.753236] Executing operation [1 instructions]:
[    1.753238]   ->DATA_IN  [256 B, force 8-bit]
[    1.762195] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.770559] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.778925] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.787291] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.795657] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.804023] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.812390] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.820756] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.829122] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.837488] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.845854] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.854221] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.862587] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.870953] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.879353] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.887687] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.896067] Could not find a valid ONFI parameter page, trying bit-wise majority to recover it
[    1.904626] ONFI parameter recovery failed, aborting
[    1.909508] Executing operation [3 instructions]:
[    1.909510]   ->CMD      [0x90]
[    1.914165]   ->ADDR     [1 cyc]
[    1.917270]   ->DATA_IN  [5 B, force 8-bit]
[    1.924622] 0x55 0xaa 0x1a 0x80 0x80 0xa6 0x24 0x74 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.932970] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.941334] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.949700] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.958069] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.966432] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.974798] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.983164] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.991531] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    1.999897] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.008263] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.016630] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.024996] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.033362] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.041728] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.050094] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.058464] Executing operation [3 instructions]:
[    2.058465]   ->CMD      [0xec]
[    2.063119]   ->ADDR     [1 cyc]
[    2.066224]   ->WAITRDY  [max 200000 ms]
[    2.069422] Executing operation [1 instructions]:
[    2.073297]   ->DATA_IN  [512 B, force 8-bit]
[    2.082268] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.090632] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.098998] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.107364] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.115731] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.124097] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.132463] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.140829] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.149196] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.157562] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.165928] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.174294] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.182661] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.191027] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.199393] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.207760] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.216157] Executing operation [1 instructions]:
[    2.216159]   ->DATA_IN  [512 B, force 8-bit]
[    2.225099] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.233462] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.241828] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.250195] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.258561] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.266927] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.275293] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.283660] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.292026] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.300392] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.308758] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.317124] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.325491] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.333857] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.342223] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.350590] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.358983] Executing operation [1 instructions]:
[    2.358985]   ->DATA_IN  [512 B, force 8-bit]
[    2.367929] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.376292] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.384658] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.393024] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.401391] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.409757] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.418123] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.426490] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.434856] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.443222] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.451588] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.459954] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.468321] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.476690] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.485053] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.493420] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.501813] Could not find valid JEDEC parameter page; aborting
[    2.507654] Executing operation [3 instructions]:
[    2.507656]   ->CMD      [0x90]
[    2.512309]   ->ADDR     [1 cyc]
[    2.515408]   ->DATA_IN  [5 B, force 8-bit]
[    2.522766] 0x55 0xaa 0x1a 0x80 0x0 0xa7 0x24 0x74 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.531027] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.539391] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.547757] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.556123] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.564490] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.572856] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.581222] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.589588] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.597954] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.606321] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.614687] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.623053] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.631419] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.639786] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.648152] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.656522] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xde
[    2.662816] nand: Hynix NAND 8GiB 3,3V 8-bit
[    2.667043] nand: 8192 MiB, MLC, erase size: 4096 KiB, page size: 16384, OOB size: 1664
[    2.674989] Executing operation [3 instructions]:
[    2.674991]   ->CMD      [0x90]
[    2.679635]   ->ADDR     [1 cyc]
[    2.682733]   ->DATA_IN  [5 B, force 8-bit]
[    2.690091] 0x55 0xaa 0x1a 0x80 0x0 0xa8 0x24 0x74 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.698352] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.706716] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.715082] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.723448] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.731818] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.740181] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.748547] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.756913] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.765280] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.773646] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.782012] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.790378] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.798744] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.807111] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.815477] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.823846] Executing operation [2 instructions]:
[    2.823847]   ->CMD      [0xff]
[    2.828501]   ->WAITRDY  [max 250 ms]
[    2.831613] Executing operation [1 instructions]:
[    2.835222]   ->CMD      [0x36]
[    2.839887] Executing operation [2 instructions]:
[    2.842984]   ->ADDR     [1 cyc]
[    2.847649]   ->DATA_OUT [1 B, force 8-bit]
[    2.850855] Executing operation [1 instructions]:
[    2.854983]   ->CMD      [0x16]
[    2.859638] Executing operation [1 instructions]:
[    2.862736]   ->CMD      [0x17]
[    2.867401] Executing operation [1 instructions]:
[    2.870505]   ->CMD      [0x04]
[    2.875163] Executing operation [1 instructions]:
[    2.878267]   ->CMD      [0x19]
[    2.882927] Executing operation [5 instructions]:
[    2.886030]   ->CMD      [0x00]
[    2.890688]   ->ADDR     [5 cyc]
[    2.893793]   ->CMD      [0x30]
[    2.896998]   ->WAITRDY  [max 200000 ms]
[    2.900096]   ->DATA_IN  [784 B]
[    2.907176] 0x0 0x0 0x0 0x80 0x0 0x48 0x2c 0x74 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.915185] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.923549] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.931915] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.940281] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.948647] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.957013] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.965380] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.973746] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.982112] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.990482] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.998845] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.007211] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.015577] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.023943] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.032309] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.040677] Executing operation [2 instructions]:
[    3.040678]   ->CMD      [0xff]
[    3.045334]   ->WAITRDY  [max 250 ms]
[    3.048446] Executing operation [1 instructions]:
[    3.052062]   ->CMD      [0x36]
[    3.056720] Executing operation [2 instructions]:
[    3.059824]   ->ADDR     [1 cyc]
[    3.064482]   ->DATA_OUT [1 B, force 8-bit]
[    3.067694] Executing operation [1 instructions]:
[    3.071815]   ->CMD      [0x16]
[    3.076471] Executing operation [4 instructions]:
[    3.079575]   ->CMD      [0x00]
[    3.084233]   ->ADDR     [5 cyc]
[    3.087332]   ->CMD      [0x30]
[    3.090529]   ->WAITRDY  [max 200000 ms]
[    3.103876] Bad block table found at page 524032, version 0x01
[    3.109667] Bad block table found at page 523776, version 0x01
[    3.115456] nand_read_bbt: bad block at 0x0001f0400000
[    3.119760] 5 fixed-partitions partitions found on MTD device d0074800.nfc
[    3.125640] Creating 5 MTD partitions on "d0074800.nfc":
[    3.130899] 0x000000000000-0x000000200000 : "boot"
[    3.136618] 0x000000200000-0x000000600000 : "env"
[    3.140305] mtd: partition "env" doesn't start on an erase/write block boundary -- force read-only
[    3.150090] 0x000000600000-0x000001000000 : "system"
[    3.154119] mtd: partition "system" doesn't start on an erase/write block boundary -- force read-only
[    3.164193] 0x000001000000-0x000004000000 : "rootfs"
[    3.169076] 0x000004000000-0x00000c000000 : "media"
[    3.176404] libphy: Fixed MDIO Bus: probed
[    3.177574] tun: Universal TUN/TAP device driver, 1.6
[    3.183262] thunder_xcv, ver 1.0
[    3.185307] thunder_bgx, ver 1.0
[    3.188466] nicpf, ver 1.0
[    3.191862] hclge is initializing
[    3.194370] hns3: Hisilicon Ethernet Network Driver for Hip08 Family - version
[    3.201546] hns3: Copyright (c) 2017 Huawei Corporation.
[    3.206860] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
[    3.212577] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    3.218482] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k
[    3.225342] igb: Copyright (c) 2007-2014 Intel Corporation.
[    3.230907] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.4.0-k
[    3.238623] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    3.245070] sky2: driver version 1.30
[    3.249140] VFIO - User Level meta-driver version: 0.3
[    3.255206] dwc3 c9000000.dwc3: Failed to get clk 'ref': -2
[    3.261085] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    3.265199] ehci-pci: EHCI PCI platform driver
[    3.269643] ehci-platform: EHCI generic platform driver

[-- Attachment #4: Type: text/plain, Size: 167 bytes --]

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-03-27  8:53         ` Liang Yang
@ 2019-03-28 18:03           ` Martin Blumenstingl
  2019-03-29  7:44             ` Liang Yang
  0 siblings, 1 reply; 13+ messages in thread
From: Martin Blumenstingl @ 2019-03-28 18:03 UTC (permalink / raw)
  To: Liang Yang
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

[-- Attachment #1: Type: text/plain, Size: 6400 bytes --]

Hi Liang,

On Wed, Mar 27, 2019 at 9:52 AM Liang Yang <liang.yang@amlogic.com> wrote:
>
> Hi Martin,
>
> Thanks a lot.
> On 2019/3/26 2:31, Martin Blumenstingl wrote:
> > Hi Liang,
> >
> > On Mon, Mar 25, 2019 at 11:03 AM Liang Yang <liang.yang@amlogic.com> wrote:
> >>
> >> Hi Martin,
> >>
> >> On 2019/3/23 5:07, Martin Blumenstingl wrote:
> >>> Hi Matthew,
> >>>
> >>> On Thu, Mar 21, 2019 at 10:44 PM Matthew Wilcox <willy@infradead.org> wrote:
> >>>>
> >>>> On Thu, Mar 21, 2019 at 09:17:34PM +0100, Martin Blumenstingl wrote:
> >>>>> Hello,
> >>>>>
> >>>>> I am experiencing the following crash:
> >>>>>     ------------[ cut here ]------------
> >>>>>     kernel BUG at mm/slub.c:3950!
> >>>>
> >>>>           if (unlikely(!PageSlab(page))) {
> >>>>                   BUG_ON(!PageCompound(page));
> >>>>
> >>>> You called kfree() on the address of a page which wasn't allocated by slab.
> >>>>
> >>>>> I have traced this crash to the kfree() in meson_nfc_read_buf().
> >>>>> my observation is as follows:
> >>>>> - meson_nfc_read_buf() is called 7 times without any crash, the
> >>>>> kzalloc() call returns 0xe9e6c600 (virtual address) / 0x29e6c600
> >>>>> (physical address)
> >>>>> - the eight time meson_nfc_read_buf() is called kzalloc() call returns
> >>>>> 0xee39a38b (virtual address) / 0x2e39a38b (physical address) and the
> >>>>> final kfree() crashes
> >>>>> - changing the size in the kzalloc() call from PER_INFO_BYTE (= 8) to
> >>>>> PAGE_SIZE works around that crash
> >>>>
> >>>> I suspect you're doing something which corrupts memory.  Overrunning
> >>>> the end of your allocation or something similar.  Have you tried KASAN
> >>>> or even the various slab debugging (eg redzones)?
> >>> KASAN is not available on 32-bit ARM. there was some progress last
> >>> year [0] but it didn't make it into mainline. I tried to make the
> >>> patches apply again and got it to compile (and my kernel is still
> >>> booting) but I have no idea if it's still working. for anyone
> >>> interested, my patches are here: [1] (I consider this a HACK because I
> >>> don't know anything about the code which is being touched in the
> >>> patches, I only made it compile)
> >>>
> >>> SLAB debugging (redzones) were a great hint, thank you very much for
> >>> that Matthew! I enabled:
> >>>     CONFIG_SLUB_DEBUG=y
> >>>     CONFIG_SLUB_DEBUG_ON=y
> >>> and with that I now get "BUG kmalloc-64 (Not tainted): Redzone
> >>> overwritten" (a larger kernel log extract is attached).
> >>>
> >>> I'm starting to wonder if the NAND controller (hardware) writes more
> >>> than 8 bytes.
> >>> some context: the "info" buffer allocated in meson_nfc_read_buf is
> >>> then passed to the NAND controller IP (after using dma_map_single).
> >>>
> >>> Liang, how does the NAND controller know that it only has to send
> >>> PER_INFO_BYTE (= 8) bytes when called from meson_nfc_read_buf? all
> >>> other callers of meson_nfc_dma_buffer_setup (which passes the info
> >>> buffer to the hardware) are using (nand->ecc.steps * PER_INFO_BYTE)
> >>> bytes?
> >>>
> >> NFC_CMD_N2M and CMDRWGEN are different commands. CMDRWGEN needs to set
> >> the ecc page size (1KB or 512B) and Pages(2, 4, 8, ...), so
> >> PER_INFO_BYTE(= 8) bytes for each ecc page.
> >> I have never used NFC_CMD_N2M to transfer data before, because it is
> >> very low efficient. And I do a experiment with the attachment and find
> >> on overwritten on my meson axg platform.
> >>
> >> Martin, I would appreciate it very much if you would try the attachment
> >> on your meson m8b platform.
> > thank you for your debug patch! on my board 2 * PER_INFO_BYTE is not enough.
> > I took the idea from your patch and adapted it so I could print a
> > buffer with 256 bytes (which seems to be "big enough" for my board).
> it only needs PER_INFO_BYTE (= 8) bytes, because NFC_CMD_N2M don't set
> *Pages*, that is not like CMDRWGEN which needs Pages*PER_INFO_BYTE (= 8)
>   bytes when setting *Pages* parameter. I have been thinking that
> NFC_CMD_N2M  only occupis PER_INFO_BYTE (= 8) bytes. And i have tried to
> not set the info address, the machine would crash.
thank you for the explanation. the command is built using:
  cmd = NFC_CMD_N2M | (len & GENMASK(5, 0));

> > see the attached, modified patch
> >
> > in the output I see that sometimes the first 32 bytes are not touched
> > by the controller, but everything beyond 32 bytes is modified in the
> > info buffer.
> >
> it really makes sense that the controller sometimes fills the space
> beyond the first 8 bytes. However i expect the controller should only
> take the first 8 bytes when using NFC_CMD_N2M.
in my tests (see the attached log output) it seems that the info
buffer size has the following constraints:
- use the "len" which is passed to meson_nfc_read_buf
- if "len" is smaller than PER_INFO_BYTE then use PER_INFO_BYTE (= 8)

> > I also tried to increase the buffer size to 512, but that didn't make
> > a difference (I never saw any info buffer modification beyond 256
> > bytes).
> >
> > also I just noticed that I didn't give you much details on my NAND chip yet.
> > from Amlogic vendor u-boot on Meson8m2 (all my Meson8b boards have
> > eMMC flash, but I believe the NAND controller on Meson8 to GXBB is
> > identical):
> >    m8m2_n200_v1#amlnf chipinfo
> >    flash  info
> >    name:B revision 20nm NAND 8GiB H27UCG8T2B, id:ad de 94 eb 74 44  0  0
> >    pagesize:0x4000, blocksize:0x400000, oobsize:0x500, chipsize:0x2000,
> >      option:0x8, T_REA:16, T_RHOH:15
> >    hw controller info
> >    chip_num:1, onfi_mode:0, page_shift:14, block_shift:22, option:0xc2
> >    ecc_unit:1024, ecc_bytes:70, ecc_steps:16, ecc_max:40
> >    bch_mode:5, user_mode:2, oobavail:32, oobtail:64384
> >
> I don't think it is caused by a different NAND type, but i have followed
> the some test on my GXL platform. we can see the result from the
> attachment. By the way, i don't find any information about this on meson
> NFC datasheet, so i will ask our VLSI.
> Martin, May you reproduce it with the new patch on meson8b platform ? I
> need a more clear and easier compared log like gxl.txt. Thanks.
your gxl.txt is great, finally I can also compare my own results with
something that works for you!
in my results (see attachment) the "DATA_IN  [256 B, force 8-bit]"
instructions result in a different info buffer output.
does this make any sense to you?


Regards
Martin

[-- Attachment #2: nand-debug-output-operations-and-info-buffer.txt --]
[-- Type: text/plain, Size: 15800 bytes --]

[    2.726921] Executing operation [2 instructions]:
[    2.726924]   ->CMD      [0xff]
[    2.726950]   ->WAITRDY  [max 250 ms]
[    2.729131] Executing operation [3 instructions]:
[    2.732748]   ->CMD      [0x90]
[    2.737480]   ->ADDR     [1 cyc]
[    2.740550]   ->DATA_IN  [2 B, force 8-bit]
[    2.747963] 0x0 0x0 0x5 0x80 0x0 0x28 0x45 0x29 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.755978] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.764431] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.772805] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.781211] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.789617] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.798027] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.806440] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.814836] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.823252] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.831658] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.840067] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.848475] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.856884] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.865285] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.873699] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.882122] Executing operation [3 instructions]:
[    2.882124]   ->CMD      [0x90]
[    2.886791]   ->ADDR     [1 cyc]
[    2.889904]   ->DATA_IN  [8 B, force 8-bit]
[    2.897316] 0x0 0x0 0x1b 0x80 0x0 0x28 0x45 0x29 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.905419] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.913837] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.922244] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.930650] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.939059] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.947467] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.955868] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.964283] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.972706] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.981101] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.989507] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    2.997916] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.006317] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.014731] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.023141] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.031565] Executing operation [3 instructions]:
[    3.031567]   ->CMD      [0x90]
[    3.036223]   ->ADDR     [1 cyc]
[    3.039353]   ->DATA_IN  [4 B, force 8-bit]
[    3.046784] 0x0 0x0 0x11 0x80 0x0 0x3d 0x5e 0x29 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.054859] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.063280] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.071687] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.080092] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.088499] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.096907] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.105308] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.113722] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.122132] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.130539] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.138948] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.147356] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.155757] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.164172] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.172579] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.181048] Executing operation [3 instructions]:
[    3.181050]   ->CMD      [0xec]
[    3.185663]   ->ADDR     [1 cyc]
[    3.188793]   ->WAITRDY  [max 200000 ms]
[    3.192013] Executing operation [1 instructions]:
[    3.195893]   ->DATA_IN  [256 B, force 8-bit]
[    3.204923] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.213322] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.221730] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.230137] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.238546] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.246954] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.255355] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.263771] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.272177] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.280587] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.288994] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.297403] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.305804] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.314218] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.322628] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.331039] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0xa5 
[    3.339469] Executing operation [1 instructions]:
[    3.339471]   ->DATA_IN  [256 B, force 8-bit]
[    3.348475] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.356868] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.365268] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.373683] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.382092] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.390514] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.398911] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.407317] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.415718] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.424133] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.432540] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.440949] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.449356] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.457766] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.466167] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.474581] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0xa5 
[    3.483014] Executing operation [1 instructions]:
[    3.483016]   ->DATA_IN  [256 B, force 8-bit]
[    3.492013] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.500415] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.508821] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.517230] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.525631] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.534045] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.542454] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.550861] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.559271] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.567678] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.576080] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.584495] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.592906] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.601326] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.609720] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 
[    3.618129] 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0x6b 0xa5 
[    3.626560] Could not find a valid ONFI parameter page, trying bit-wise majority to recover it
[    3.635155] ONFI parameter recovery failed, aborting
[    3.640073] Executing operation [3 instructions]:
[    3.640075]   ->CMD      [0x90]
[    3.644733]   ->ADDR     [1 cyc]
[    3.647863]   ->DATA_IN  [5 B, force 8-bit]
[    3.655269] 0x0 0x0 0x10 0x80 0x0 0x3d 0x5e 0x29 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.663381] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.671784] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.680193] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.688601] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.697009] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.705410] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.713824] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.722234] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.730640] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.739050] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.747458] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.755859] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.764274] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.772681] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.781091] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.789537] Executing operation [3 instructions]:
[    3.789539]   ->CMD      [0x90]
[    3.794174]   ->ADDR     [1 cyc]
[    3.797304]   ->DATA_IN  [5 B, force 8-bit]
[    3.804707] 0x0 0x0 0x10 0x80 0xc0 0x22 0x5e 0x29 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.812921] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.821314] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.829719] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.838128] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.846540] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.854937] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.863353] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.871759] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.880169] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.888577] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.896985] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.905386] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.913800] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.922210] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.930616] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.939053] nand: device found, Manufacturer ID: 0xad, Chip ID: 0xde
[    3.945348] nand: Hynix NAND 8GiB 3,3V 8-bit
[    3.949604] nand: 8192 MiB, MLC, erase size: 4096 KiB, page size: 16384, OOB size: 1280
[    3.957611] Executing operation [3 instructions]:
[    3.957613]   ->CMD      [0x90]
[    3.962251]   ->ADDR     [1 cyc]
[    3.965372]   ->DATA_IN  [5 B, force 8-bit]
[    3.972787] 0x0 0x0 0x10 0x80 0x0 0x24 0x5e 0x29 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.980899] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.989302] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    3.997711] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.006111] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.014539] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.022950] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.031343] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.039752] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.048159] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.056567] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.064968] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.073382] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.081792] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.090199] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 
[    4.098608] 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 0xfd 

[-- Attachment #3: Type: text/plain, Size: 167 bytes --]

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-03-28 18:03           ` Martin Blumenstingl
@ 2019-03-29  7:44             ` Liang Yang
  2019-04-05  4:30               ` Martin Blumenstingl
  0 siblings, 1 reply; 13+ messages in thread
From: Liang Yang @ 2019-03-29  7:44 UTC (permalink / raw)
  To: Martin Blumenstingl
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

Hi Martin,

On 2019/3/29 2:03, Martin Blumenstingl wrote:
> Hi Liang, 
[......]
>> I don't think it is caused by a different NAND type, but i have followed
>> the some test on my GXL platform. we can see the result from the
>> attachment. By the way, i don't find any information about this on meson
>> NFC datasheet, so i will ask our VLSI.
>> Martin, May you reproduce it with the new patch on meson8b platform ? I
>> need a more clear and easier compared log like gxl.txt. Thanks.
> your gxl.txt is great, finally I can also compare my own results with
> something that works for you!
> in my results (see attachment) the "DATA_IN  [256 B, force 8-bit]"
> instructions result in a different info buffer output.
> does this make any sense to you?
> 
I have asked our VLSI designer for explanation or simulation result by 
an e-mail. Thanks.

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-03-29  7:44             ` Liang Yang
@ 2019-04-05  4:30               ` Martin Blumenstingl
  2019-04-10 11:08                 ` Liang Yang
  0 siblings, 1 reply; 13+ messages in thread
From: Martin Blumenstingl @ 2019-04-05  4:30 UTC (permalink / raw)
  To: Liang Yang
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

Hi Liang,

On Fri, Mar 29, 2019 at 8:44 AM Liang Yang <liang.yang@amlogic.com> wrote:
>
> Hi Martin,
>
> On 2019/3/29 2:03, Martin Blumenstingl wrote:
> > Hi Liang,
> [......]
> >> I don't think it is caused by a different NAND type, but i have followed
> >> the some test on my GXL platform. we can see the result from the
> >> attachment. By the way, i don't find any information about this on meson
> >> NFC datasheet, so i will ask our VLSI.
> >> Martin, May you reproduce it with the new patch on meson8b platform ? I
> >> need a more clear and easier compared log like gxl.txt. Thanks.
> > your gxl.txt is great, finally I can also compare my own results with
> > something that works for you!
> > in my results (see attachment) the "DATA_IN  [256 B, force 8-bit]"
> > instructions result in a different info buffer output.
> > does this make any sense to you?
> >
> I have asked our VLSI designer for explanation or simulation result by
> an e-mail. Thanks.
do you have any update on this?


Martin

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-04-05  4:30               ` Martin Blumenstingl
@ 2019-04-10 11:08                 ` Liang Yang
  2019-04-10 17:54                   ` Martin Blumenstingl
  0 siblings, 1 reply; 13+ messages in thread
From: Liang Yang @ 2019-04-10 11:08 UTC (permalink / raw)
  To: Martin Blumenstingl
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

Hi Martin,

On 2019/4/5 12:30, Martin Blumenstingl wrote:
> Hi Liang,
> 
> On Fri, Mar 29, 2019 at 8:44 AM Liang Yang <liang.yang@amlogic.com> wrote:
>>
>> Hi Martin,
>>
>> On 2019/3/29 2:03, Martin Blumenstingl wrote:
>>> Hi Liang,
>> [......]
>>>> I don't think it is caused by a different NAND type, but i have followed
>>>> the some test on my GXL platform. we can see the result from the
>>>> attachment. By the way, i don't find any information about this on meson
>>>> NFC datasheet, so i will ask our VLSI.
>>>> Martin, May you reproduce it with the new patch on meson8b platform ? I
>>>> need a more clear and easier compared log like gxl.txt. Thanks.
>>> your gxl.txt is great, finally I can also compare my own results with
>>> something that works for you!
>>> in my results (see attachment) the "DATA_IN  [256 B, force 8-bit]"
>>> instructions result in a different info buffer output.
>>> does this make any sense to you?
>>>
>> I have asked our VLSI designer for explanation or simulation result by
>> an e-mail. Thanks.
> do you have any update on this?
> Sorry. I haven't got reply from VLSI designer yet. We tried to improve 
priority yesterday, but i still can't estimate the time. There is no 
document or change list showing the difference between m8/b and gxl/axg 
serial chips. Now it seems that we can't use command NFC_CMD_N2M on nand 
initialization for m8/b chips and use *read byte from NFC fifo register* 
instead.
> 
> Martin
> 
> .
> 

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-04-10 11:08                 ` Liang Yang
@ 2019-04-10 17:54                   ` Martin Blumenstingl
  2019-04-11  3:00                     ` Liang Yang
  0 siblings, 1 reply; 13+ messages in thread
From: Martin Blumenstingl @ 2019-04-10 17:54 UTC (permalink / raw)
  To: Liang Yang
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

Hi Liang,

On Wed, Apr 10, 2019 at 1:08 PM Liang Yang <liang.yang@amlogic.com> wrote:
>
> Hi Martin,
>
> On 2019/4/5 12:30, Martin Blumenstingl wrote:
> > Hi Liang,
> >
> > On Fri, Mar 29, 2019 at 8:44 AM Liang Yang <liang.yang@amlogic.com> wrote:
> >>
> >> Hi Martin,
> >>
> >> On 2019/3/29 2:03, Martin Blumenstingl wrote:
> >>> Hi Liang,
> >> [......]
> >>>> I don't think it is caused by a different NAND type, but i have followed
> >>>> the some test on my GXL platform. we can see the result from the
> >>>> attachment. By the way, i don't find any information about this on meson
> >>>> NFC datasheet, so i will ask our VLSI.
> >>>> Martin, May you reproduce it with the new patch on meson8b platform ? I
> >>>> need a more clear and easier compared log like gxl.txt. Thanks.
> >>> your gxl.txt is great, finally I can also compare my own results with
> >>> something that works for you!
> >>> in my results (see attachment) the "DATA_IN  [256 B, force 8-bit]"
> >>> instructions result in a different info buffer output.
> >>> does this make any sense to you?
> >>>
> >> I have asked our VLSI designer for explanation or simulation result by
> >> an e-mail. Thanks.
> > do you have any update on this?
> Sorry. I haven't got reply from VLSI designer yet. We tried to improve
> priority yesterday, but i still can't estimate the time. There is no
> document or change list showing the difference between m8/b and gxl/axg
> serial chips. Now it seems that we can't use command NFC_CMD_N2M on nand
> initialization for m8/b chips and use *read byte from NFC fifo register*
> instead.
thank you for the status update!

I am trying to understand your suggestion not to use NFC_CMD_N2M:
the documentation (public S922X datasheet from Hardkernel: [0]) states
that P_NAND_BUF (NFC_REG_BUF in the meson_nand driver) can hold up to
four bytes of data. is this the "read byte from NFC FIFO register" you
mentioned?

Before I spend time changing the code to use the FIFO register I would
like to wait for an answer from your VLSI designer.
Setting the "correct" info buffer length for NFC_CMD_N2M on the 32-bit
SoCs seems like an easier solution compared to switching to the FIFO
register. Keeping NFC_CMD_N2M on the 32-bit SoCs also allows us to
have only one code-path for 32 and 64 bit SoCs, meaning we don't have
to maintain two separate code-paths for basically the same
functionality (assuming that NFC_CMD_N2M is not completely broken on
the 32-bit SoCs, we just don't know how to use it yet).


Regards
Martin


[0] https://dn.odroid.com/S922X/ODROID-N2/Datasheet/S922X_Public_Datasheet_V0.2.pdf

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-04-10 17:54                   ` Martin Blumenstingl
@ 2019-04-11  3:00                     ` Liang Yang
  2019-06-08 20:00                       ` Martin Blumenstingl
  0 siblings, 1 reply; 13+ messages in thread
From: Liang Yang @ 2019-04-11  3:00 UTC (permalink / raw)
  To: Martin Blumenstingl
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

Hi Martin,
On 2019/4/11 1:54, Martin Blumenstingl wrote:
> Hi Liang,
> 
> On Wed, Apr 10, 2019 at 1:08 PM Liang Yang <liang.yang@amlogic.com> wrote:
>>
>> Hi Martin,
>>
>> On 2019/4/5 12:30, Martin Blumenstingl wrote:
>>> Hi Liang,
>>>
>>> On Fri, Mar 29, 2019 at 8:44 AM Liang Yang <liang.yang@amlogic.com> wrote:
>>>>
>>>> Hi Martin,
>>>>
>>>> On 2019/3/29 2:03, Martin Blumenstingl wrote:
>>>>> Hi Liang,
>>>> [......]
>>>>>> I don't think it is caused by a different NAND type, but i have followed
>>>>>> the some test on my GXL platform. we can see the result from the
>>>>>> attachment. By the way, i don't find any information about this on meson
>>>>>> NFC datasheet, so i will ask our VLSI.
>>>>>> Martin, May you reproduce it with the new patch on meson8b platform ? I
>>>>>> need a more clear and easier compared log like gxl.txt. Thanks.
>>>>> your gxl.txt is great, finally I can also compare my own results with
>>>>> something that works for you!
>>>>> in my results (see attachment) the "DATA_IN  [256 B, force 8-bit]"
>>>>> instructions result in a different info buffer output.
>>>>> does this make any sense to you?
>>>>>
>>>> I have asked our VLSI designer for explanation or simulation result by
>>>> an e-mail. Thanks.
>>> do you have any update on this?
>> Sorry. I haven't got reply from VLSI designer yet. We tried to improve
>> priority yesterday, but i still can't estimate the time. There is no
>> document or change list showing the difference between m8/b and gxl/axg
>> serial chips. Now it seems that we can't use command NFC_CMD_N2M on nand
>> initialization for m8/b chips and use *read byte from NFC fifo register*
>> instead.
> thank you for the status update!
> 
> I am trying to understand your suggestion not to use NFC_CMD_N2M:
> the documentation (public S922X datasheet from Hardkernel: [0]) states
> that P_NAND_BUF (NFC_REG_BUF in the meson_nand driver) can hold up to
> four bytes of data. is this the "read byte from NFC FIFO register" you
> mentioned?
> 
You are right.take the early meson NFC driver V2 on previous mail as a 
reference.

> Before I spend time changing the code to use the FIFO register I would
> like to wait for an answer from your VLSI designer.
> Setting the "correct" info buffer length for NFC_CMD_N2M on the 32-bit
> SoCs seems like an easier solution compared to switching to the FIFO
> register. Keeping NFC_CMD_N2M on the 32-bit SoCs also allows us to
> have only one code-path for 32 and 64 bit SoCs, meaning we don't have
> to maintain two separate code-paths for basically the same
> functionality (assuming that NFC_CMD_N2M is not completely broken on
> the 32-bit SoCs, we just don't know how to use it yet).
> 
All right. I am also waiting for the answer.
> 
> Regards
> Martin
> 
> 
> [0] https://dn.odroid.com/S922X/ODROID-N2/Datasheet/S922X_Public_Datasheet_V0.2.pdf
> 
> .
> 

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: 32-bit Amlogic (ARM) SoC: kernel BUG in kfree()
  2019-04-11  3:00                     ` Liang Yang
@ 2019-06-08 20:00                       ` Martin Blumenstingl
  0 siblings, 0 replies; 13+ messages in thread
From: Martin Blumenstingl @ 2019-06-08 20:00 UTC (permalink / raw)
  To: Liang Yang
  Cc: mhocko, linux-kernel, linux, Matthew Wilcox, rppt, linux-mm,
	linux-mtd, linux-amlogic, akpm, linux-arm-kernel

Hi Liang,

On Thu, Apr 11, 2019 at 5:00 AM Liang Yang <liang.yang@amlogic.com> wrote:
>
> Hi Martin,
> On 2019/4/11 1:54, Martin Blumenstingl wrote:
> > Hi Liang,
> >
> > On Wed, Apr 10, 2019 at 1:08 PM Liang Yang <liang.yang@amlogic.com> wrote:
> >>
> >> Hi Martin,
> >>
> >> On 2019/4/5 12:30, Martin Blumenstingl wrote:
> >>> Hi Liang,
> >>>
> >>> On Fri, Mar 29, 2019 at 8:44 AM Liang Yang <liang.yang@amlogic.com> wrote:
> >>>>
> >>>> Hi Martin,
> >>>>
> >>>> On 2019/3/29 2:03, Martin Blumenstingl wrote:
> >>>>> Hi Liang,
> >>>> [......]
> >>>>>> I don't think it is caused by a different NAND type, but i have followed
> >>>>>> the some test on my GXL platform. we can see the result from the
> >>>>>> attachment. By the way, i don't find any information about this on meson
> >>>>>> NFC datasheet, so i will ask our VLSI.
> >>>>>> Martin, May you reproduce it with the new patch on meson8b platform ? I
> >>>>>> need a more clear and easier compared log like gxl.txt. Thanks.
> >>>>> your gxl.txt is great, finally I can also compare my own results with
> >>>>> something that works for you!
> >>>>> in my results (see attachment) the "DATA_IN  [256 B, force 8-bit]"
> >>>>> instructions result in a different info buffer output.
> >>>>> does this make any sense to you?
> >>>>>
> >>>> I have asked our VLSI designer for explanation or simulation result by
> >>>> an e-mail. Thanks.
> >>> do you have any update on this?
> >> Sorry. I haven't got reply from VLSI designer yet. We tried to improve
> >> priority yesterday, but i still can't estimate the time. There is no
> >> document or change list showing the difference between m8/b and gxl/axg
> >> serial chips. Now it seems that we can't use command NFC_CMD_N2M on nand
> >> initialization for m8/b chips and use *read byte from NFC fifo register*
> >> instead.
> > thank you for the status update!
> >
> > I am trying to understand your suggestion not to use NFC_CMD_N2M:
> > the documentation (public S922X datasheet from Hardkernel: [0]) states
> > that P_NAND_BUF (NFC_REG_BUF in the meson_nand driver) can hold up to
> > four bytes of data. is this the "read byte from NFC FIFO register" you
> > mentioned?
> >
> You are right.take the early meson NFC driver V2 on previous mail as a
> reference.
>
> > Before I spend time changing the code to use the FIFO register I would
> > like to wait for an answer from your VLSI designer.
> > Setting the "correct" info buffer length for NFC_CMD_N2M on the 32-bit
> > SoCs seems like an easier solution compared to switching to the FIFO
> > register. Keeping NFC_CMD_N2M on the 32-bit SoCs also allows us to
> > have only one code-path for 32 and 64 bit SoCs, meaning we don't have
> > to maintain two separate code-paths for basically the same
> > functionality (assuming that NFC_CMD_N2M is not completely broken on
> > the 32-bit SoCs, we just don't know how to use it yet).
> >
> All right. I am also waiting for the answer.
do you have any update on this?


Martin

_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2019-06-08 20:01 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-21 20:17 32-bit Amlogic (ARM) SoC: kernel BUG in kfree() Martin Blumenstingl
2019-03-21 21:44 ` Matthew Wilcox
2019-03-22 21:07   ` Martin Blumenstingl
2019-03-25 10:04     ` Liang Yang
2019-03-25 18:31       ` Martin Blumenstingl
2019-03-27  8:53         ` Liang Yang
2019-03-28 18:03           ` Martin Blumenstingl
2019-03-29  7:44             ` Liang Yang
2019-04-05  4:30               ` Martin Blumenstingl
2019-04-10 11:08                 ` Liang Yang
2019-04-10 17:54                   ` Martin Blumenstingl
2019-04-11  3:00                     ` Liang Yang
2019-06-08 20:00                       ` Martin Blumenstingl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).