1. 18 1月, 2019 2 次提交
  2. 16 1月, 2019 1 次提交
    • L
      mtd: rawnand: fsmc: Keep bank enable bit set · 663ec3a2
      Linus Walleij 提交于
      Hammering the "bank enable" (PBKEN) bit on and off between
      every command crashes the Nomadik NHK15 with this message:
      
      Scanning device for bad blocks
      Unhandled fault: external abort on non-linefetch (0x008) at 0xcc95e000
      pgd = (ptrval)
      [cc95e000] *pgd=0b808811, *pte=40000653, *ppte=40000552
      Internal error: : 8 [#1] PREEMPT ARM
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper Not tainted 4.20.0-rc2+ #72
      Hardware name: Nomadik STn8815
      PC is at fsmc_exec_op+0x194/0x204
      (...)
      
      After a discussion we (me and Boris Brezillon) start to suspect
      that this bit does not immediately control the chip select line
      at all, it rather enables access to the bank and the hardware
      will drive the CS autonomously. If there is a NAND chip connected,
      we should keep this enabled.
      
      As fsmc_nand_setup() sets this bit, we can simply remove the
      offending code.
      
      Fixes: 550b9fc4 ("mtd: rawnand: fsmc: Stop implementing ->select_chip()")
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Acked-by: NMiquel Raynal <miquel.raynal@bootlin.com>
      Signed-off-by: NBoris Brezillon <bbrezillon@kernel.org>
      663ec3a2
  3. 08 1月, 2019 1 次提交
    • C
      mtd: rawnand: qcom: fix memory corruption that causes panic · 81d9bdf5
      Christian Lamparter 提交于
      This patch fixes a memory corruption that occurred in the
      qcom-nandc driver since it was converted to nand_scan().
      
      On boot, an affected device will panic from a NPE at a weird place:
      | Unable to handle kernel NULL pointer dereference at virtual address 0
      | pgd = (ptrval)
      | [00000000] *pgd=00000000
      | Internal error: Oops: 80000005 [#1] SMP ARM
      | CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.19.9 #0
      | Hardware name: Generic DT based system
      | PC is at   (null)
      | LR is at nand_block_isbad+0x90/0xa4
      | pc : [<00000000>]    lr : [<c0592240>]    psr: 80000013
      | sp : cf839d40  ip : 00000000  fp : cfae9e20
      | r10: cf815810  r9 : 00000000  r8 : 00000000
      | r7 : 00000000  r6 : 00000000  r5 : 00000001  r4 : cf815810
      | r3 : 00000000  r2 : cfae9810  r1 : ffffffff  r0 : cf815810
      | Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
      | Control: 10c5387d  Table: 8020406a  DAC: 00000051
      | Process swapper/0 (pid: 1, stack limit = 0x(ptrval))
      | [<c0592240>] (nand_block_isbad) from [<c0580a94>]
      | [<c0580a94>] (allocate_partition) from [<c05811e4>]
      | [<c05811e4>] (add_mtd_partitions) from [<c0581164>]
      | [<c0581164>] (parse_mtd_partitions) from [<c057def4>]
      | [<c057def4>] (mtd_device_parse_register) from [<c059d274>]
      | [<c059d274>] (qcom_nandc_probe) from [<c0567f00>]
      
      The problem is that the nand_scan()'s qcom_nand_attach_chip callback
      is updating the nandc->max_cwperpage from 1 to 4. This causes the
      sg_init_table of clear_bam_transaction() in the driver's
      qcom_nandc_block_bad() to memset much more than what was initially
      allocated by alloc_bam_transaction().
      
      This patch restores the old behavior by reallocating the shared bam
      transaction alloc_bam_transaction() after the chip was identified,
      but before mtd_device_parse_register() (which is an alias for
      mtd_device_register() - see panic) gets called. This fixes the
      corruption and the driver is working again.
      
      Cc: stable@vger.kernel.org
      Fixes: 6a3cec64 ("mtd: rawnand: qcom: convert driver to nand_scan()")
      Signed-off-by: NChristian Lamparter <chunkeey@gmail.com>
      Acked-by: NMiquel Raynal <miquel.raynal@bootlin.com>
      Signed-off-by: NBoris Brezillon <bbrezillon@kernel.org>
      81d9bdf5
  4. 07 1月, 2019 2 次提交
  5. 17 12月, 2018 1 次提交
  6. 15 12月, 2018 3 次提交
  7. 14 12月, 2018 2 次提交
  8. 11 12月, 2018 19 次提交
  9. 07 12月, 2018 9 次提交
新手
引导
客服 返回
顶部