[PATCH 4/4][v2] rapidio, powerpc/85xx: Error interrupt handler for sRIO.

Xie Shaohui-B21989 B21989 at freescale.com
Wed Nov 17 19:09:19 EST 2010


 

 

 

Best Regards, 
Shaohui Xie 

 

From: Bounine, Alexandre [mailto:Alexandre.Bounine at idt.com] 
Sent: Tuesday, November 16, 2010 10:01 PM
To: Xie Shaohui-B21989; akpm at linux-foundation.org
Cc: linux-kernel at vger.kernel.org; linuxppc-dev at lists.ozlabs.org; Li
Yang-R58472; Gala Kumar-B11780; Zang Roy-R61911
Subject: RE: [PATCH 4/4][v2] rapidio, powerpc/85xx: Error interrupt
handler for sRIO.

 

> From: Shaohui Xie [mailto:b21989 at freescale.com]
>
> The sRIO controller reports errors to the core with one signal, it
uses
> register EPWISR to provides the core quick access to where the error
occurred.
> The EPWISR indicates that there are 4 interrupts sources, port1,
port2, message
> unit and port write receive, but the sRIO driver does not support
port2
> for now, still the handler takes care of port2.
> Currently the handler only clear error status without any recovery.
>

Do these dual-RIO controllers have only one port-write interrupt?
(sorry, user manuals are not available for download from FSL).  

[Xie Shaohui] Yes, only one inbound port-write interrupt.



> @@ -1082,14 +1142,24 @@ fsl_rio_port_write_handler(int irq, void
*dev_instance)
>       ipwsr = in_be32(&priv->msg_regs->pwsr);
>
>       epwisr = in_be32(priv->regs_win + RIO_EPWISR);
> -     if (epwisr & 0x80000000) {
> +     if (epwisr & EPWISR_ERR_PINT1) {
>               tmp = in_be32(priv->regs_win + RIO_LTLEDCSR);
>               pr_info("RIO_LTLEDCSR = 0x%x\n", tmp);
> -             out_be32(priv->regs_win + RIO_LTLEDCSR, 0);
> +             port_error_handler(port, 0);
> +     }
> +
> +     if (epwisr & EPWISR_ERR_PINT2) {
> +             pr_info("RIO: port2 error\n");
> +             port_error_handler(port, 1);
> +     }
> +
> +     if (epwisr & EPWISR_ERR_MU) {
> +             pr_info("RIO: message unit error\n");
> +             msg_unit_error_handler(port);
>       }
>
> -     if (!(epwisr & 0x00000001))
> -             return IRQ_HANDLED;
> +     if (!(epwisr & EPWISR_ERR_PW))
> +             return IRQ_NONE;
>
>  #ifdef DEBUG_PW
>       pr_debug("PW Int->IPWMR: 0x%08x IPWSR: 0x%08x (", ipwmr, ipwsr);

This part is out of sync with mainline code tree (37-rc1). Probably it
should be updated to make it easier to apply your patch. Besides that,
works as expected on my RIO setup.




[Xie Shaohui] Ok, I'll updated my patch to latest kernel.

BTW: Something wrong with my outlook, seems it cannot prefix  each line
of original message to some specific emails, but not all, Sorry if this
cause you trouble to read my reply. 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20101117/41e8104a/attachment-0001.html>


More information about the Linuxppc-dev mailing list