Possibly on pre ARMv6 only. On ARMv6 and above, the discussed behavior
_never_ worked. It is fundamental to the CPU design.
Nothing was fixed. There is nothing to fix. Simply that a wrong driver
assumption about the hardware capability was prohibited by the API.
There is no API change. Simply an API misuse. Granted, on pre ARMv6
this usage used to work, but on ARMv6 and above this never was supported
at all by the hardware. The fact that the software has let it through
was a gross mistake, period.
Such drivers on ARMv6 should *never* have worked in the first place.
When they did "work", they corrupted memory.
That's B/s. As Russell said, there are known solutions that were
proposed at least six months ago.
Excuse me, but preventing data corruption is a damn valid thing to do.
The real problem is that people kept on abusing the API for something
that the hardware simply can't support, and the mere fact that things
_appears_ to just work by accident in 98% of the cases encourage people
to simply put their head in the sand and ignore the issue. Sorry folks,
but that's not how computing works. We're not amateurs for damn sake,
and when the ARM bible says this operation is UNSUPPORTED, it is
UNSUPPORTED. Seeing people trying to fsck around the issue because of
laziness is revolting!
The API should have complained the very first time they attempted the
operation in question. It should never have worked. I'm sorry but the
mere fact that the broken driver didn't receive an error before is no
excuse to *knowingly* let memory corruption go on.
Wrong. See above.
I'm afraid you are totally missing the point.
The patch Russell introduced simply prevented an abuse of the API for
which there are documented evidences that such abuse is a source of
memory corruption. This must not be allowed any longer, not even for a
warning period. There is no regression what so ever as those driver
were always broken. And I much prefer to have brokenness in the form of
driver initialization error rather than silent and random memory
corruptions.
So folks please get real and understand that Russell was right.
The only compromise that may be made is to allow the API abuse on pre
ARMv6 implementations where this has no adverse effect, which is the
patch I just posted. Granted, on pre ARMv6, the ioremap of system RAM
was fine and people legitimately relied on it in their drivers. But
this just can't be allowed anymore on ARMv6.
Nicolas
--