microblaze: Add support for error injection
authorAppana Durga Kedareswara rao <appana.durga.rao@xilinx.com>
Mon, 27 Jun 2022 06:40:24 +0000 (12:10 +0530)
committerMichal Simek <michal.simek@amd.com>
Mon, 26 Sep 2022 12:13:29 +0000 (14:13 +0200)
commitadc4cefae9cfafc1c88b789021266d6f09a0ecef
treed4350a714f8ff5fa339ba06dffce6e5cdcc5151d
parent88707ebe77e23e856981e597f322cabbf6415662
microblaze: Add support for error injection

To inject the error using the tmr inject IP reset vectors need to be placed
in lmb(bram) due to the limitation in HW when this code runs out of DDR.
Below code adds the error inject code to the .init.ivt section to copy
it in machine_early_init to lmb/Bram location. C_BASE_VECTORS which allow
moving reset vectors out of 0 location is not currently supported by
Microblaze architecture, that's why all the time reset vectors with
injection code is all the time copied to address 0.

As of now getting this functionality working CPU switches to real mode
and simply jumps to bram, which causes triggering of fault which continues
to call_xmb_manager_break break handler which will at the end calls the
error count callback function and performs recovery.

Signed-off-by: Appana Durga Kedareswara rao <appana.durga.rao@xilinx.com>
Link: https://lore.kernel.org/r/20220627064024.771037-4-appana.durga.rao@xilinx.com
Signed-off-by: Michal Simek <michal.simek@amd.com>
arch/microblaze/include/asm/xilinx_mb_manager.h
arch/microblaze/kernel/entry.S