lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Tue, 20 Aug 2019 09:25:08 +0200
From:   Helmut Grohne <helmut.grohne@...enta.de>
To:     Naga Sureshkumar Relli <naga.sureshkumar.relli@...inx.com>
CC:     <miquel.raynal@...tlin.com>, <bbrezillon@...nel.org>,
        <richard@....at>, <dwmw2@...radead.org>,
        <computersforpeace@...il.com>, <marek.vasut@...il.com>,
        <vigneshr@...com>, <yamada.masahiro@...ionext.com>,
        <linux-mtd@...ts.infradead.org>, <linux-kernel@...r.kernel.org>,
        <srinivas.goud@...inx.com>, <shubhrajyoti.datta@...inx.com>,
        <svemula@...inx.com>, <nagasuresh12@...il.com>,
        <michal.simek@...inx.com>
Subject: Re: [LINUX PATCH v19] mtd: rawnand: pl353: Add basic driver for arm
 pl353 smc nand interface

Hi,

On Tue, Jul 30, 2019 at 05:43:37AM -0600, Naga Sureshkumar Relli wrote:
> Add driver for arm pl353 static memory controller nand interface.
> This controller is used in Xilinx Zynq SoC for interfacing the
> NAND flash memory.

Is there a reason that you dropped me from the Cc list? If you Cc me,
the feedback loop is faster. Please continue to Cc me on this driver.

> -> Tested Micron MT29F2G08ABAEAWP (On-die capable) and AMD/Spansion S34ML01G1.

I tested this version of the driver with this exact Micron flash in an
on-die configuration against v5.3-rc4. The patch applied cleanly and
built without problems. The driver detects the chip and works
"somewhat". One can interact with portions of the flash, but the amount
of ECC errors returned makes it unusable. I was able to reproduce the
same issue on multiple devices.

...
[   14.909894] jffs2: mtd->read(0x178 bytes from 0x21e0688) returned ECC error
[   14.917250] jffs2: mtd->read(0x800 bytes from 0x21e0000) returned ECC error
[   14.952765] jffs2: mtd->read(0x364 bytes from 0x21c049c) returned ECC error
[   14.960070] jffs2: mtd->read(0x6f8 bytes from 0x21c0108) returned ECC error
[   14.967435] jffs2: mtd->read(0x800 bytes from 0x21c0000) returned ECC error
[   15.001194] ------------[ cut here ]------------
[   15.006092] WARNING: CPU: 0 PID: 94 at drivers/mtd/nand/raw/nand_micron.c:245 micron_nand_read_page_on_die_ecc+0x394/0x3a0
[   15.018148] ---[ end trace 2d1d02f05cac8fbb ]---
[   15.022909] jffs2: error: (94) jffs2_get_inode_nodes: can not read 344 bytes from 0x021a16a8, error code: -22.
[   15.035205] jffs2: error: (94) jffs2_do_read_inode_internal: cannot read nodes for ino 8375, returned error is -22
[   15.045744] jffs2: Returned error for crccheck of ino #8375. Expect badness...
[   15.231220] jffs2: Checked all inodes but still 0x15361c bytes of unchecked space?
[   15.238851] jffs2: No space for garbage collection. Aborting GC thread
...

I cannot confirm that the driver works.

For completeness sake, here is the decompiled DT that I used:

memory-controller@...0e000 {
	#address-cells = <0x2>;
	#size-cells = <0x1>;
	status = "okay";
	clock-names = "memclk", "apb_pclk";
	clocks = <0x1 0xb 0x1 0x2c>;
	compatible = "arm,pl353-smc-r2p1", "arm,primecell";
	interrupt-parent = <0x4>;
	interrupts = <0x0 0x12 0x4>;
	ranges = <0x0 0x0 0xe1000000 0x1000000>;
	reg = <0xe000e000 0x1000>;

	flash@...00000 {
		status = "okay";
		compatible = "arm,pl353-nand-r2p1";
		reg = <0x0 0x0 0x1000000>;
		#address-cells = <0x1>;
		#size-cells = <0x1>;
		nand-ecc-mode = "on-die";
		nand-bus-width = <0x8>;

	};
};

I am posting a decompiled DT, because parts are generated using
https://github.com/Xilinx/device-tree-xlnx.

The driver from the xlnx 4.14 tree continues to work with the hardware I
used for testing.

Helmut

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ