[Blackfin] arch: fix bug - a crash on bootup with CONFIG_MPU on the BF548
authorBernd Schmidt <bernds_cb1@t-online.de>
Wed, 23 Apr 2008 18:56:36 +0000 (02:56 +0800)
committerBryan Wu <cooloney@kernel.org>
Wed, 23 Apr 2008 18:56:36 +0000 (02:56 +0800)
commitd56daae9bec92ae4b0c115db787a0fcc4c17b381
tree502be06afc9116fa993807a758a998c23fc8d14a
parent697a9d65aa799940da1c9145944c6b9bd0f442c5
[Blackfin] arch: fix bug - a crash on bootup with CONFIG_MPU on the BF548

The function flush_switched_dcplbs was clearing the CPLB entries covering
the process permission bitmasks.  This means that the sequence

flush_switched_dcplbs ();
        set_mask_dcplbs(mm->context.page_rwx_mask);

has a problem: if kernel code (such as an interrupt) causes a CPLB miss before
set_mask_dcplbs completes, the CPLB handler function causes a double fault,
with an instantaneous reboot.

This bug fix is dedicated to Michael Hennerich, the only person in the world
capable of providing working JTAG hardware.

Signed-off-by: Bernd Schmidt <bernds_cb1@t-online.de>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
arch/blackfin/kernel/cplb-mpu/cplbmgr.c