From: Brian Norris <computersforpeace@gmail.com>
To: Zhou Wang <wangzhou1@hisilicon.com>
Cc: mark.rutland@arm.com, Zhou Wang <wangzhou.bry@gmail.com>,
Iwo Mergler <Iwo.Mergler@netcommwireless.com>,
pawel.moll@arm.com, devicetree@vger.kernel.org,
liguozhu@hisilicon.com, ijc+devicetree@hellion.org.uk,
haojian.zhuang@gmail.com, robh+dt@kernel.org,
linux-mtd@lists.infradead.org, xuwei5@hisilicon.com,
galak@codeaurora.org, caizhiyong@huawei.com,
yubingxu@hisilicon.com, David Woodhouse <dwmw2@infradead.org>
Subject: Re: [PATCH v4 0/2] mtd: hisilicon: add a new driver for NAND controller of hisilicon hip04 Soc
Date: Thu, 22 Jan 2015 00:45:29 -0800 [thread overview]
Message-ID: <20150122084529.GC3268@brian-ubuntu> (raw)
In-Reply-To: <54C06E05.9050205@hisilicon.com>
Hi Zhou,
On Thu, Jan 22, 2015 at 11:27:01AM +0800, Zhou Wang wrote:
> Very sorry for late, I made tests again and also had a talk with the
> NAND controller hardware colleague. Please find my reply below.
No problem. Glad to hear you followed through on this one, as the
results were curious.
> On 2015/1/13 12:17, Brian Norris wrote:
> > On Wed, Dec 17, 2014 at 07:05:47PM +0800, Zhou Wang wrote:
> >> On 2014年12月17日 14:23, Brian Norris wrote:
> > [...]
> >>>> [ 104.648056] mtd_nandbiterrs: ECC failure, read data is incorrect
> >>>> despite read success
> >>>> insmod: can't insert 'mtd_nandbiterrs.ko': Input/output error
[...]
> I made testes again in 1bit/ECC and 16bit/ECC modes using 2K(page)+64B(oob)
> NAND flash. here are the logs, I also printed ECC code in OOB area.
>
> Results are:
> 1. in 16bit/ECC, it will return -EBADMSG as the ECC codes have been broken.
> 2. in 1bit/ECC, it will not reture -EBADMSG because a hardware design problem.
> I will explain the detail below.
>
> Test logs:
> 1. in 16bit/ECC(print ECC codes):
>
> /home # insmod mtd_nandbiterrs.ko dev=2 page_offset=1 seed=110 mode=0
...
> mtd_nandbiterrs: error: read failed at 0x800
> mtd_nandbiterrs: After 1 biterrors per subpage, read reported error -74
^^^ Ah, that's what I would expect from a driver that doesn't implement
the raw() functions.
> mtd_nandbiterrs: finished successfully.
> ==================================================
> insmod: can't insert 'mtd_nandbiterrs.ko': Input/output error
>
> 2. in 1bit/ECC(print ECC codes):
> /home # insmod mtd_nandbiterrs.ko dev=2 page_offset=1 seed=110 mode=0
...
> mtd_nandbiterrs: ECC failure, read data is incorrect despite read success
> insmod: can't insert 'mtd_nandbiterrs.ko': Input/output error
>
> Reason about above 1bit/ECC test result:
...
> It can not correct this kind of 2bit errors in 1bit/ECC mode in this NAND
> controller, however, it will trigger a correctable interrupt. As a result,
> software can not find this 1bit error in page data.
IOW, uncorrectable errors are getting reported as corrected bitflips?
That does sound bad.
> This is a hardware problem of this NAND controller.
> I plan to remove the 1bit/ECC mode support in patch of next version.
OK, sounds good. 1-bit HW ECC is not really very useful these days
anyway, if your higher-bit ECC can serve to replace it. Can the ECC
bytes still fit in the same spare area, though?
> > Are you saying you cannot implement the raw() hooks for this IP? Or just
> > that you haven't yet? The latter is probably OK for now (I'd recommend
> > doing this, or at least mark a TODO in the code), but the former is a
> > little disturbing.
>
> The function of raw() hooks is just writing the page data to flash, is this right?
Right, just data (and OOB, if calling the _oob_ functions) without any
ECC parity bytes.
> In none ECC mode, it can write page date alone to flash. But in ECC mode, NAND
> controller will produce related ECC code automatically, write page data and ECC code
> to flash. In ECC mode, it can not write page date alone to flash for this NAND controller.
Perhaps you can switch between ECC mode and non-ECC mode?
At any rate, this isn't absolutely required.
> As a result, the nandbiterrs test can not pass.
>
> I don't know if I have explained these two problems clearly. If still have something
> confused, please let me know.
Brian
WARNING: multiple messages have this Message-ID (diff)
From: Brian Norris <computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Zhou Wang <wangzhou1-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>
Cc: Zhou Wang <wangzhou.bry-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
mark.rutland-5wv7dgnIgG8@public.gmane.org,
pawel.moll-5wv7dgnIgG8@public.gmane.org,
ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
caizhiyong-hv44wF8Li93QT0dZR+AlfA@public.gmane.org,
haojian.zhuang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
xuwei5-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org,
liguozhu-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org,
yubingxu-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org,
Iwo Mergler
<Iwo.Mergler-/K5RfY/kUqoaXkdz0Xzl5EEOCMrvLtNR@public.gmane.org>
Subject: Re: [PATCH v4 0/2] mtd: hisilicon: add a new driver for NAND controller of hisilicon hip04 Soc
Date: Thu, 22 Jan 2015 00:45:29 -0800 [thread overview]
Message-ID: <20150122084529.GC3268@brian-ubuntu> (raw)
In-Reply-To: <54C06E05.9050205-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>
Hi Zhou,
On Thu, Jan 22, 2015 at 11:27:01AM +0800, Zhou Wang wrote:
> Very sorry for late, I made tests again and also had a talk with the
> NAND controller hardware colleague. Please find my reply below.
No problem. Glad to hear you followed through on this one, as the
results were curious.
> On 2015/1/13 12:17, Brian Norris wrote:
> > On Wed, Dec 17, 2014 at 07:05:47PM +0800, Zhou Wang wrote:
> >> On 2014年12月17日 14:23, Brian Norris wrote:
> > [...]
> >>>> [ 104.648056] mtd_nandbiterrs: ECC failure, read data is incorrect
> >>>> despite read success
> >>>> insmod: can't insert 'mtd_nandbiterrs.ko': Input/output error
[...]
> I made testes again in 1bit/ECC and 16bit/ECC modes using 2K(page)+64B(oob)
> NAND flash. here are the logs, I also printed ECC code in OOB area.
>
> Results are:
> 1. in 16bit/ECC, it will return -EBADMSG as the ECC codes have been broken.
> 2. in 1bit/ECC, it will not reture -EBADMSG because a hardware design problem.
> I will explain the detail below.
>
> Test logs:
> 1. in 16bit/ECC(print ECC codes):
>
> /home # insmod mtd_nandbiterrs.ko dev=2 page_offset=1 seed=110 mode=0
...
> mtd_nandbiterrs: error: read failed at 0x800
> mtd_nandbiterrs: After 1 biterrors per subpage, read reported error -74
^^^ Ah, that's what I would expect from a driver that doesn't implement
the raw() functions.
> mtd_nandbiterrs: finished successfully.
> ==================================================
> insmod: can't insert 'mtd_nandbiterrs.ko': Input/output error
>
> 2. in 1bit/ECC(print ECC codes):
> /home # insmod mtd_nandbiterrs.ko dev=2 page_offset=1 seed=110 mode=0
...
> mtd_nandbiterrs: ECC failure, read data is incorrect despite read success
> insmod: can't insert 'mtd_nandbiterrs.ko': Input/output error
>
> Reason about above 1bit/ECC test result:
...
> It can not correct this kind of 2bit errors in 1bit/ECC mode in this NAND
> controller, however, it will trigger a correctable interrupt. As a result,
> software can not find this 1bit error in page data.
IOW, uncorrectable errors are getting reported as corrected bitflips?
That does sound bad.
> This is a hardware problem of this NAND controller.
> I plan to remove the 1bit/ECC mode support in patch of next version.
OK, sounds good. 1-bit HW ECC is not really very useful these days
anyway, if your higher-bit ECC can serve to replace it. Can the ECC
bytes still fit in the same spare area, though?
> > Are you saying you cannot implement the raw() hooks for this IP? Or just
> > that you haven't yet? The latter is probably OK for now (I'd recommend
> > doing this, or at least mark a TODO in the code), but the former is a
> > little disturbing.
>
> The function of raw() hooks is just writing the page data to flash, is this right?
Right, just data (and OOB, if calling the _oob_ functions) without any
ECC parity bytes.
> In none ECC mode, it can write page date alone to flash. But in ECC mode, NAND
> controller will produce related ECC code automatically, write page data and ECC code
> to flash. In ECC mode, it can not write page date alone to flash for this NAND controller.
Perhaps you can switch between ECC mode and non-ECC mode?
At any rate, this isn't absolutely required.
> As a result, the nandbiterrs test can not pass.
>
> I don't know if I have explained these two problems clearly. If still have something
> confused, please let me know.
Brian
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-01-22 8:45 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-04 12:46 [PATCH v4 0/2] mtd: hisilicon: add a new driver for NAND controller of hisilicon hip04 Soc Zhou Wang
2014-11-04 12:46 ` Zhou Wang
2014-11-04 12:46 ` Zhou Wang
2014-11-04 12:47 ` [PATCH v4 1/2] mtd: hisilicon: add a new NAND controller driver for " Zhou Wang
2014-11-04 12:47 ` Zhou Wang
2014-11-30 9:35 ` Brian Norris
2014-11-30 9:35 ` Brian Norris
2014-11-30 9:35 ` Brian Norris
2014-12-01 13:08 ` Zhou Wang
2014-12-01 13:08 ` Zhou Wang
2014-12-01 13:08 ` Zhou Wang
2014-12-01 18:14 ` Brian Norris
2014-12-01 18:14 ` Brian Norris
2014-12-01 18:14 ` Brian Norris
2014-12-01 9:25 ` Brian Norris
2014-12-01 9:25 ` Brian Norris
2014-12-01 9:25 ` Brian Norris
2014-12-01 13:08 ` Zhou Wang
2014-12-01 13:08 ` Zhou Wang
2014-12-01 13:08 ` Zhou Wang
2014-11-04 12:47 ` [PATCH v4 2/2] mtd: hisilicon: add device tree binding documentation Zhou Wang
2014-11-04 12:47 ` Zhou Wang
2014-11-30 8:56 ` Brian Norris
2014-11-30 8:56 ` Brian Norris
2014-12-01 13:08 ` Zhou Wang
2014-12-01 13:08 ` Zhou Wang
2014-12-01 13:08 ` Zhou Wang
2014-11-30 9:01 ` Brian Norris
2014-11-30 9:01 ` Brian Norris
2014-11-30 9:01 ` Brian Norris
2014-12-01 13:07 ` Zhou Wang
2014-12-01 13:07 ` Zhou Wang
2014-12-01 13:07 ` Zhou Wang
2014-11-06 3:05 ` [PATCH v4 0/2] mtd: hisilicon: add a new driver for NAND controller of hisilicon hip04 Soc Haojian Zhuang
2014-11-06 3:05 ` Haojian Zhuang
2014-11-06 3:05 ` Haojian Zhuang
2014-11-26 6:35 ` Haojian Zhuang
2014-11-26 6:35 ` Haojian Zhuang
2014-11-26 6:35 ` Haojian Zhuang
2014-11-30 9:08 ` Brian Norris
2014-11-30 9:08 ` Brian Norris
2014-12-01 13:06 ` Zhou Wang
2014-12-01 13:06 ` Zhou Wang
2014-12-01 13:06 ` Zhou Wang
2014-12-11 12:02 ` Zhou Wang
2014-12-11 12:02 ` Zhou Wang
2014-12-17 1:03 ` Brian Norris
2014-12-17 1:03 ` Brian Norris
2014-12-17 5:06 ` Zhou Wang
2014-12-17 5:06 ` Zhou Wang
2014-12-17 6:23 ` Brian Norris
2014-12-17 6:23 ` Brian Norris
2014-12-17 11:05 ` Zhou Wang
2014-12-17 11:05 ` Zhou Wang
2015-01-13 4:17 ` Brian Norris
2015-01-13 4:17 ` Brian Norris
2015-01-22 3:27 ` Zhou Wang
2015-01-22 3:27 ` Zhou Wang
2015-01-22 8:45 ` Brian Norris [this message]
2015-01-22 8:45 ` Brian Norris
2015-01-25 8:19 ` Zhou Wang
2015-01-25 8:19 ` Zhou Wang
2015-02-06 1:33 ` Brian Norris
2015-02-06 1:33 ` Brian Norris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150122084529.GC3268@brian-ubuntu \
--to=computersforpeace@gmail.com \
--cc=Iwo.Mergler@netcommwireless.com \
--cc=caizhiyong@huawei.com \
--cc=devicetree@vger.kernel.org \
--cc=dwmw2@infradead.org \
--cc=galak@codeaurora.org \
--cc=haojian.zhuang@gmail.com \
--cc=ijc+devicetree@hellion.org.uk \
--cc=liguozhu@hisilicon.com \
--cc=linux-mtd@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=wangzhou.bry@gmail.com \
--cc=wangzhou1@hisilicon.com \
--cc=xuwei5@hisilicon.com \
--cc=yubingxu@hisilicon.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.