Thread (8 messages) 8 messages, 2 authors, 2015-03-30

Re: [PATCH v4 02/10] mtd: st_spi_fsm: Fetch boot device locations from DT match tables

From: Brian Norris <hidden>
Date: 2015-03-13 16:06:10
Also in: linux-arm-kernel, lkml

On Tue, Feb 24, 2015 at 09:41:10AM +0000, Lee Jones wrote:
On Mon, 23 Feb 2015, Brian Norris wrote:
quoted
On Tue, Feb 10, 2015 at 03:46:34PM +0800, Lee Jones wrote:
quoted
On Thu, 05 Feb 2015, Brian Norris wrote:
[snip other discussion]
quoted
Now, unless you were able to provide an additional enlightening
viewpoint, then the following paragraph likely all holds true:
quoted
quoted
Also, I realized that all this boot device / syscfg gymnastics is just
for one simple fact; your driver is trying to hide the fact that your
system can't reliably handle 4-byte addressing for the boot device. Even
if you try your best at toggling 4-byte addressing before/after each
read/write/erase, you still are vulnerable to power cuts during the
operation. This is a bad design, and we have consistently agreed that we
aren't going to work around that in Linux.

Better solutions: hook up a reset line to your flash; improve your boot
ROM / bootloader to handle 4-byte addressing for large flash.
Okay, I'm re-read the code and have a new understanding about the
boot-from-spi 'gymnastics'. 
Great! See, much of that could be done by reading your own code (yeah,
yeah, not "yours"; but still) and honestly dealing with my questions,
rather than giving up and deferring to me or your MIA authorities. I'm
happy to return to technical points and avoid the other unpleasantness.
There is a separate controller on the platform which acts as a boot
device and makes the NOR chip appear as though it is memory mapped.
This expects the NOR Controller to be in its default state [24-bit
addressing] on boot.  The issue arises if a warm-reset occurs and the
device is still in 32-bit addressing mode.
OK, this is all familiar. This is common to many other systems.
To minimise the risk, the
controller attempts to stay in 24-bit addressing mode for as long as
possible.
This is the part where we differ, I suppose. The "as long as possible"
statement is still not sufficient; I believe this still leaves holes
that simply cannot be fixed in Linux.
You mentioned power-cuts.  I do not believe this to be an issue, as
when the power is completely removed the controller will reset back
into default state.  Only warm-resets are an issue.
You're right: power cuts shouldn't be a problem. But what about other
unexpected warm resets? (Watchdogs?) Do you have any solution for them?
quoted
quoted
quoted
What's the possibility of dropping all this 4-byte address toggling
shenanigans? This will be a blocker to merging with spi-nor.c.
We wouldn't be able to remove this code without significantly
weakening resilience to warm-reset mishaps, and changing the hardware
design for devices which have already been released is obviously out
of the question.
Then maybe we can't solve this. That doesn't mean that upstream will
support you, though.

Problems like this are why "release early, release often" makes sense.
If your employer didn't take the "fire the engineers and dump software
support to the community" approach, but rather honestly engaged on
driver support earlier, then perhaps your employer could have fixed the
SoCs/boot ROMs/board designs earlier, rather than later, and you
wouldn't be stuck trying to wedge in upstream workarounds for bad
designs in the wild.

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help