mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:38:03 +00:00
bus: omap_l3_smx: identify timeout cause before rebooting
Identify and print the error source before rebooting the board due to an l3 timeout error. This is helpful when debugging, e.g. via serial. Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com> Message-ID: <20230801192240.1063764-1-absicsz@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
06c2afb862
commit
99f13d7a16
@ -166,19 +166,10 @@ static irqreturn_t omap3_l3_app_irq(int irq, void *_l3)
|
||||
irqreturn_t ret = IRQ_NONE;
|
||||
|
||||
int_type = irq == l3->app_irq ? L3_APPLICATION_ERROR : L3_DEBUG_ERROR;
|
||||
if (!int_type) {
|
||||
if (!int_type)
|
||||
status = omap3_l3_readll(l3->rt, L3_SI_FLAG_STATUS_0);
|
||||
/*
|
||||
* if we have a timeout error, there's nothing we can
|
||||
* do besides rebooting the board. So let's BUG on any
|
||||
* of such errors and handle the others. timeout error
|
||||
* is severe and not expected to occur.
|
||||
*/
|
||||
BUG_ON(status & L3_STATUS_0_TIMEOUT_MASK);
|
||||
} else {
|
||||
else
|
||||
status = omap3_l3_readll(l3->rt, L3_SI_FLAG_STATUS_1);
|
||||
/* No timeout error for debug sources */
|
||||
}
|
||||
|
||||
/* identify the error source */
|
||||
err_source = __ffs(status);
|
||||
@ -190,6 +181,14 @@ static irqreturn_t omap3_l3_app_irq(int irq, void *_l3)
|
||||
ret |= omap3_l3_block_irq(l3, error, error_addr);
|
||||
}
|
||||
|
||||
/*
|
||||
* if we have a timeout error, there's nothing we can
|
||||
* do besides rebooting the board. So let's BUG on any
|
||||
* of such errors and handle the others. timeout error
|
||||
* is severe and not expected to occur.
|
||||
*/
|
||||
BUG_ON(!int_type && status & L3_STATUS_0_TIMEOUT_MASK);
|
||||
|
||||
/* Clear the status register */
|
||||
clear = (L3_AGENT_STATUS_CLEAR_IA << int_type) |
|
||||
L3_AGENT_STATUS_CLEAR_TA;
|
||||
|
Loading…
Reference in New Issue
Block a user