From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from gateway.prograde.net ([66.92.163.78] helo=sol.prograde.net) by canuck.infradead.org with esmtp (Exim 4.72 #1 (Red Hat Linux)) id 1PmTHH-00019L-5m for linux-mtd@lists.infradead.org; Mon, 07 Feb 2011 15:45:24 +0000 Subject: Re: Numonyx NOR and chip->mutex bug? Mime-Version: 1.0 (Apple Message framework v1082) Content-Type: text/plain; charset=us-ascii From: Michael Cashwell In-Reply-To: Date: Mon, 7 Feb 2011 10:46:22 -0500 Content-Transfer-Encoding: quoted-printable Message-Id: <96BD3889-E8AD-408D-8275-ED1A5FD55F1B@prograde.net> References: <16826B66-31FE-41AD-A6EF-E668A45AF1FE@prograde.net> <6FC0E416-EEBD-453F-AAB9-88BB6D90BFAB@prograde.net> <4D4AD9ED.8060104@keymile.com> <4D4B37D4.4050204@keymile.com> <4D4BDD48.6040600@keymile.com> <541E19B8-D428-4F59-B6BB-A3BD8F455AE4@prograde.net> <0488D3BA-7BA3-4E98-B289-3F3D1DB485D4@prograde.net> To: Joakim Tjernlund Cc: Holger brunck , stefan.bigler@keymile.com, linux-mtd@lists.infradead.org List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Feb 7, 2011, at 10:01 AM, Joakim Tjernlund wrote: > Stefan Bigler wrote on 2011/02/07 = 15:47:00: >>=20 >=20 >> I run the test on my side with the patches proposed with and without = barrier(). >> Both worked without problems. >=20 > Thanks for testing. So that means moving the chip state while loop first solves the problem = for both of you. That's good news and makes it more likely that you are = seeing the same issue. I'm OK that it doesn't fix my issue. It's seemed = different from the beginning. >> My workspace has now the following patches: >>=20 >> 1) clear status before suspend No, before erase resume. >> ------------------------------ >> + /* numonyx data sheet clearly says to always reset the status = bits >> + before resuming a suspended erase. not doing so results in >> + an ambiguous mixture of status bits once the command ends. */ >> + debug_map_write(map, CMD(0x50), adr); >> + debug_map_write(map, CMD(0xd0), adr); >=20 > The 0xd0 seems should not be there, its already in place? I think he meant the 0xd0 line to be context, not added. So maybe the + = was wrong? My current workaround from my problem is to do a throw-away status read = "(void) map_read(map, addr);" after that 0x50, 0xd0, 0x70 sequence. Since no one else is seeing my problem I expect it's some issue with my = specific batch of chips. Ugh. > it does seem like a good idea to add a Clear Status to be sure you = won't end up with error bits set just before resume. > This is a separate patch though. Does your test case work without this = patch and only my patch applied? >=20 >> 2) compare chip>state and chip_state before touching the chip >> ------------------------------------------------------------ >=20 > I plan to submit this one shortly, if you and Michael could Ack. it = when I do, that would be great. Happy to test and ack when it arrives. -Mike