From 7b891c4c109941d478675e1ab471d9bcdf654356 Mon Sep 17 00:00:00 2001 From: Yifeng Zhao Date: Wed, 30 Jun 2021 16:38:13 +0800 Subject: [PATCH] drivers: rk_nand: zftl: fix unexpected gfp: 0x4 (GFP_DMA32) printf bug: [ 0.980989] rknandbase v1.2 2021-01-07 [ 0.981645] rknand fe330000.nandc: rknand_probe clk rate = 148500000 [ 0.981862] Unexpected gfp: 0x4 (GFP_DMA32). Fixing up to gfp: 0x6000c0 (GFP_KERNEL). Fix your code! [ 0.981875] CPU: 3 PID: 1 Comm: swapper/0 Not tainted 4.19.193 #35 [ 0.981889] Hardware name: Rockchip RK3566 EVB1 DDR4 V10 Board (DT) [ 0.981901] Call trace: [ 0.981921] dump_backtrace+0x0/0x15c [ 0.981934] show_stack+0x14/0x1c [ 0.981949] dump_stack+0xb8/0xf0 [ 0.981963] ___slab_alloc+0x5c4/0x5d8 [ 0.981975] __kmalloc+0x230/0x348 [ 0.981989] ftl_malloc+0x18/0x20 [ 0.982002] rk_ftl_init+0x5c/0x33c [ 0.982017] rknand_dev_init+0x64/0x3e0 [ 0.982028] rknand_driver_init+0x3c/0x40 [ 0.982040] do_one_initcall+0x90/0x270 [ 0.982053] do_initcall_level+0xbc/0x160 [ 0.982064] do_basic_setup+0x30/0x48 [ 0.982074] kernel_init_freeable+0xb0/0x134 [ 0.982085] kernel_init+0x14/0x290 [ 0.982096] ret_from_fork+0x10/0x18 Signed-off-by: Yifeng Zhao Change-Id: I8fe8eaee13a63e8d6df077ab9d5d004d583f2aa6 --- drivers/rk_nand/rk_zftl_arm64.S | 187 ++++++++++++++++---------------- 1 file changed, 94 insertions(+), 93 deletions(-) diff --git a/drivers/rk_nand/rk_zftl_arm64.S b/drivers/rk_nand/rk_zftl_arm64.S index e2ded818efc9..ea8c92930f86 100644 --- a/drivers/rk_nand/rk_zftl_arm64.S +++ b/drivers/rk_nand/rk_zftl_arm64.S @@ -5,7 +5,7 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * date: 2021-06-16 + * date: 2021-06-30 * function: rk ftl v6 for rockchip soc base on arm v8 to support 3D/2D * TLC and MLC. */ @@ -26946,7 +26946,7 @@ rk_ftl_init: mov w0, 136 strb wzr, [x19, 496] str wzr, [x19, 248] - bl ftl_malloc + bl ftl_dma32_malloc str x0, [x19, 232] cbnz x0, .L4174 .L4176: @@ -26959,7 +26959,7 @@ rk_ftl_init: ret .L4174: mov w0, 2048 - bl ftl_malloc + bl ftl_dma32_malloc add x1, x19, 512 stp x0, xzr, [x19, 504] str xzr, [x19, 240] @@ -29119,93 +29119,94 @@ StorageSysDataDeInit: .type rk_ftl_vendor_storage_init, %function rk_ftl_vendor_storage_init: stp x29, x30, [sp, -80]! - mov w0, 65536 add x29, sp, 0 stp x19, x20, [sp, 16] adrp x19, .LANCHOR5 add x20, x19, :lo12:.LANCHOR5 stp x21, x22, [sp, 32] stp x23, x24, [sp, 48] - stp x25, x26, [sp, 64] + str x25, [sp, 64] + ldr x0, [x20, 1112] + cbnz x0, .L4500 + mov w0, 65536 bl ftl_malloc str x0, [x20, 1112] +.L4500: + add x19, x19, :lo12:.LANCHOR5 + ldr x0, [x19, 1112] cbz x0, .L4505 - adrp x24, .LC337 - mov w26, 22084 - mov x22, x19 - add x24, x24, :lo12:.LC337 - mov w25, 0 - mov w23, 0 + adrp x23, .LC337 + mov w25, 22084 + add x23, x23, :lo12:.LC337 + mov w24, 0 + mov w22, 0 mov w21, 0 - movk w26, 0x524b, lsl 16 + movk w25, 0x524b, lsl 16 .L4503: - ldr x2, [x20, 1112] + ldr x2, [x19, 1112] mov w1, 128 lsl w0, w21, 7 bl FlashBootVendorRead - cbnz w0, .L4501 - ldr x0, [x20, 1112] + cbnz w0, .L4506 + ldr x0, [x19, 1112] add x1, x0, 61440 ldr w3, [x0, 4] ldr w2, [x1, 4092] ldr w1, [x0] - mov x0, x24 + mov x0, x23 bl printk - ldr x19, [x20, 1112] - ldr w0, [x19] - cmp w0, w26 + ldr x20, [x19, 1112] + ldr w0, [x20] + cmp w0, w25 bne .L4502 - add x0, x19, 61440 - ldr w1, [x19, 4] + add x0, x20, 61440 + ldr w1, [x20, 4] ldr w0, [x0, 4092] cmp w0, w1 bne .L4502 - cmp w0, w23 + cmp w0, w22 bls .L4502 - mov w25, w21 - mov w23, w0 + mov w24, w21 + mov w22, w0 .L4502: add w21, w21, 1 cmp w21, 2 bne .L4503 - cbz w23, .L4504 - mov x2, x19 + cbz w22, .L4504 + mov x2, x20 mov w1, 128 - lsl w0, w25, 7 + lsl w0, w24, 7 bl FlashBootVendorRead - cbnz w0, .L4501 + cmp w0, 0 + csetm w0, ne .L4499: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] - ldp x25, x26, [sp, 64] + ldr x25, [sp, 64] ldp x29, x30, [sp], 80 ret .L4504: mov w1, 0 mov x2, 65536 - mov x0, x19 + mov x0, x20 bl memset mov w1, 22084 mov w0, 1 movk w1, 0x524b, lsl 16 - stp w1, w0, [x19] - add x1, x19, 61440 + stp w1, w0, [x20] + add x1, x20, 61440 str w0, [x1, 4092] mov w0, -1032 - strh w0, [x19, 14] + strh w0, [x20, 14] mov w0, 0 b .L4499 -.L4501: - add x22, x22, :lo12:.LANCHOR5 - ldr x0, [x22, 1112] - bl kfree - str xzr, [x22, 1112] - mov w0, -1 - b .L4499 .L4505: mov w0, -12 b .L4499 +.L4506: + mov w0, -1 + b .L4499 .size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init .align 2 .global rk_ftl_vendor_read @@ -29213,20 +29214,20 @@ rk_ftl_vendor_storage_init: rk_ftl_vendor_read: adrp x3, .LANCHOR5+1112 ldr x4, [x3, #:lo12:.LANCHOR5+1112] - cbz x4, .L4513 + cbz x4, .L4514 ldrh w6, [x4, 10] add x5, x4, 16 mov w3, 0 -.L4510: +.L4511: cmp w3, w6 - bcc .L4512 -.L4513: + bcc .L4513 +.L4514: mov w0, -1 ret -.L4512: +.L4513: ldrh w7, [x5], 8 cmp w7, w0 - bne .L4511 + bne .L4512 stp x29, x30, [sp, -32]! add x3, x4, w3, uxtw 3 mov x0, x1 @@ -29244,9 +29245,9 @@ rk_ftl_vendor_read: ldr x19, [sp, 16] ldp x29, x30, [sp], 32 ret -.L4511: +.L4512: add w3, w3, 1 - b .L4510 + b .L4511 .size rk_ftl_vendor_read, .-rk_ftl_vendor_read .align 2 .global rk_ftl_vendor_write @@ -29261,7 +29262,7 @@ rk_ftl_vendor_write: stp x23, x24, [sp, 48] stp x25, x26, [sp, 64] stp x27, x28, [sp, 80] - cbz x19, .L4533 + cbz x19, .L4534 add w4, w2, 63 ldrh w3, [x19, 10] ldrh w24, [x19, 8] @@ -29270,12 +29271,12 @@ rk_ftl_vendor_write: and w22, w4, -64 add x1, x19, 16 mov w20, 0 -.L4520: +.L4521: cmp w20, w3 - bcc .L4528 + bcc .L4529 ldrh w1, [x19, 14] cmp w22, w1 - bhi .L4533 + bhi .L4534 add x3, x19, w3, uxth 3 strh w0, [x3, 16] and w0, w22, 65535 @@ -29295,11 +29296,11 @@ rk_ftl_vendor_write: ldrh w0, [x19, 10] add w0, w0, 1 strh w0, [x19, 10] - b .L4535 -.L4528: + b .L4536 +.L4529: ldrh w6, [x1], 8 cmp w6, w0 - bne .L4521 + bne .L4522 uxtw x23, w20 add x5, x19, 1024 add x21, x19, x23, lsl 3 @@ -29307,17 +29308,17 @@ rk_ftl_vendor_write: add w25, w25, 63 and w25, w25, -64 cmp w26, w25 - bls .L4522 + bls .L4523 ldrh w0, [x19, 14] cmp w22, w0 - bhi .L4533 + bhi .L4534 add x23, x23, 2 ldrh w21, [x21, 18] add x23, x19, x23, lsl 3 sub w3, w3, #1 -.L4523: +.L4524: cmp w20, w3 - bcc .L4524 + bcc .L4525 add x20, x19, w20, uxtw 3 and w21, w21, 65535 add x0, x5, w21, uxth @@ -29334,7 +29335,7 @@ rk_ftl_vendor_write: sub w0, w0, w4 add w25, w0, w25 strh w25, [x19, 14] -.L4535: +.L4536: ldr w0, [x19, 4] add x1, x19, 61440 mov x2, x19 @@ -29351,7 +29352,7 @@ rk_ftl_vendor_write: lsl w0, w24, 7 bl FlashBootVendorWrite mov w0, 0 -.L4518: +.L4519: ldp x19, x20, [sp, 16] ldp x21, x22, [sp, 32] ldp x23, x24, [sp, 48] @@ -29359,7 +29360,7 @@ rk_ftl_vendor_write: ldp x27, x28, [sp, 80] ldp x29, x30, [sp], 112 ret -.L4524: +.L4525: add w20, w20, 1 stp w3, w6, [x29, 96] add x0, x19, w20, uxtw 3 @@ -29381,111 +29382,111 @@ rk_ftl_vendor_write: add w21, w21, w27 ldr x5, [x29, 104] ldp w3, w6, [x29, 96] - b .L4523 -.L4522: + b .L4524 +.L4523: ldrh w0, [x21, 18] uxtw x2, w26 mov x1, x28 add x0, x5, x0 bl memcpy strh w26, [x21, 20] - b .L4535 -.L4521: + b .L4536 +.L4522: add w20, w20, 1 - b .L4520 -.L4533: + b .L4521 +.L4534: mov w0, -1 - b .L4518 + b .L4519 .size rk_ftl_vendor_write, .-rk_ftl_vendor_write .align 2 .global rk_ftl_vendor_storage_ioctl .type rk_ftl_vendor_storage_ioctl, %function rk_ftl_vendor_storage_ioctl: stp x29, x30, [sp, -48]! - mov w0, 4096 + mov w0, 9216 add x29, sp, 0 stp x19, x20, [sp, 16] mov x20, x2 str x21, [sp, 32] mov w21, w1 bl ftl_malloc - cbz x0, .L4544 + cbz x0, .L4545 mov w1, 30209 mov x19, x0 movk w1, 0x4004, lsl 16 cmp w21, w1 - beq .L4539 + beq .L4540 add w1, w1, 1 cmp w21, w1 - beq .L4540 -.L4550: + beq .L4541 +.L4551: mov x20, -14 - b .L4538 -.L4539: + b .L4539 +.L4540: mov x2, 8 mov x1, x20 bl rk_copy_from_user - cbnz x0, .L4550 + cbnz x0, .L4551 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - beq .L4542 -.L4543: + beq .L4543 +.L4544: mov x20, -1 -.L4538: +.L4539: mov x0, x19 bl kfree -.L4536: +.L4537: mov x0, x20 ldr x21, [sp, 32] ldp x19, x20, [sp, 16] ldp x29, x30, [sp], 48 ret -.L4542: +.L4543: ldrh w2, [x19, 6] add x1, x19, 8 ldrh w0, [x19, 4] bl rk_ftl_vendor_read cmn w0, #1 - beq .L4543 + beq .L4544 strh w0, [x19, 6] and x0, x0, 65535 add x2, x0, 8 mov x1, x19 mov x0, x20 bl rk_copy_to_user - cbnz x0, .L4550 + cbnz x0, .L4551 mov x20, 0 - b .L4538 -.L4540: + b .L4539 +.L4541: mov x2, 8 mov x1, x20 bl rk_copy_from_user - cbnz x0, .L4550 + cbnz x0, .L4551 ldr w1, [x19] mov w0, 17745 movk w0, 0x5652, lsl 16 cmp w1, w0 - bne .L4543 + bne .L4544 ldrh w2, [x19, 6] cmp w2, 4087 - bhi .L4543 + bhi .L4544 add w2, w2, 8 mov x1, x20 sxtw x2, w2 mov x0, x19 bl rk_copy_from_user - cbnz x0, .L4550 + cbnz x0, .L4551 ldrh w2, [x19, 6] add x1, x19, 8 ldrh w0, [x19, 4] bl rk_ftl_vendor_write sxtw x20, w0 - b .L4538 -.L4544: + b .L4539 +.L4545: mov x20, -1 - b .L4536 + b .L4537 .size rk_ftl_vendor_storage_ioctl, .-rk_ftl_vendor_storage_ioctl .global SecureBootUnlockTryCount .global SecureBootCheckOK