IPIC Status is provided by register IPIC_SERSR and not by IPIC_SERMR
which is the mask register.
Signed-off-by: Christophe Leroy <redacted>
---
arch/powerpc/sysdev/ipic.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
@@ -846,12 +846,12 @@ void ipic_disable_mcp(enum ipic_mcp_irq mcp_irq)u32ipic_get_mcp_status(void){-returnipic_read(primary_ipic->regs,IPIC_SERMR);+returnipic_read(primary_ipic->regs,IPIC_SERSR);}voidipic_clear_mcp_status(u32mask){-ipic_write(primary_ipic->regs,IPIC_SERMR,mask);+ipic_write(primary_ipic->regs,IPIC_SERSR,mask);}/* Return an interrupt vector or 0 if no interrupt is pending. */
@@ -846,12 +846,12 @@ void ipic_disable_mcp(enum ipic_mcp_irq mcp_irq)u32ipic_get_mcp_status(void){-returnipic_read(primary_ipic->regs,IPIC_SERMR);+returnipic_read(primary_ipic->regs,IPIC_SERSR);}voidipic_clear_mcp_status(u32mask){-ipic_write(primary_ipic->regs,IPIC_SERMR,mask);+ipic_write(primary_ipic->regs,IPIC_SERSR,mask);}/* Return an interrupt vector or 0 if no interrupt is pending. */
IPIC Status is provided by register IPIC_SERSR and not by IPIC_SERMR
which is the mask register.
This seems like it would be a bad bug. But I guess it hasn't mattered
for some reason?
As far as I can see, this function has been added in kernel 2.6.12 but
has never been used in-tree.
I have discovered this error while implementing NMI watchdog on a 832x
board, ie this function is needed to know when a machine check exception
is generated by the watchdog timer.
Christophe
@@ -846,12 +846,12 @@ void ipic_disable_mcp(enum ipic_mcp_irq mcp_irq)u32ipic_get_mcp_status(void){-returnipic_read(primary_ipic->regs,IPIC_SERMR);+returnipic_read(primary_ipic->regs,IPIC_SERSR);}voidipic_clear_mcp_status(u32mask){-ipic_write(primary_ipic->regs,IPIC_SERMR,mask);+ipic_write(primary_ipic->regs,IPIC_SERSR,mask);}/* Return an interrupt vector or 0 if no interrupt is pending. */