[PATCH 0/9] Switch internal registers address to 0xF1 on Armada 370/XP

Greg itooo at itooo.com
Wed May 22 07:46:53 EDT 2013


Le 22/05/2013 12:01, Sebastian Hesselbarth a écrit :
> On 05/21/2013 09:38 PM, Willy Tarreau wrote:
>> On Tue, May 21, 2013 at 12:33:25PM +0200, Thomas Petazzoni wrote:
>> (...)
>>> As it was explained above, we unfortunately can't read the
>>> current base address of the internal register window, so we need a
>>> different mechanism to know if the bootloader has done the remapping
>>> at 0xF1000000 (new generation bootloader) or has left the internal
>>> registers at 0xD0000000 (old generation bootloader).
>>
>> Just out of curiosity, what happens if you touch the register at the
>> wrong address ? I mean, if you blindly write to the 0xD0xxxxxx address
>> that you want the registers to be mapped at 0xF1xxxxxx. Will the chip
>> hang, will it silently ignore the sequence ? Because maybe you don't
>> need to detect using CP15 whether the remapping was done, you could
>> simply perform it unconditionally.
>
> Willy,
>
> I tried the above on Dove which is possibly affected by the workaround
> as it is also ARMv7. In Dove you can access unmapped addresses without
> any problems, but as Thomas already stated Armada 370/XP just hang.
> Must be some default AHB slave in Dove, which Armada 370/XP is missing.

According to functionnal specs, when accessing a unmapped address, you 
will trigger a "coherency fabric" error named AccessErr (register 
0x00020258).
I guess this will trigger an interrupt which will hang the CPU if the 
vector is not handled.

Greg



More information about the linux-arm-kernel mailing list