Re: Serial related oops



What we've seen on our embedded ARM is that enabling an interrupt that
is shared between multiple UARTs, at a stage when you have not set up
all the data structures touched by the ISR and softirq, can have
horrible consequences, including soft lockups and fandangos on core.
You will be vulnerable to this unless you lock out the interrupt
source (at the interrupt controller or, if you have to, globally)
across the UART registration process in your platform's
arch/mach-dependent core.c, in which case the TX irq test will of
course fail. Roll-your-own SoC UARTs with bugs or "extended features"
in IRQ enabling and delivery make things worse.

I would love to see this disentangled in a maintainable way. It's
such a nasty problem (especially given that bootloaders and early boot
code frequently turn on one or more UARTs and leave them in an unknown
state) that all we've been able to do so far is hack around it. I'll
send an example patch when we've more or less isolated it, but it will
be of limited use to you unless you have the exact set of UART warpage
we do.

Cheers,
- Michael
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: [PATCH] 8250 UART backup timer
    ... Diva UARTs). ... RX interrupt kicks it into working again (ie. an unattended reboot could ... static void serial8250_timeout ... If the "interrupt" for this port doesn't correspond with any ...
    (Linux-Kernel)
  • Re: Killing a blocking thread ?
    ... Assume that the async event is fired by an interrupt. ... The system remembers the fact that you wait - than your thread is marked as "needs no CPU time". ... When an interrupt occures the system checks his list of "waiters" and if a thread is found waiting for that specific thing ... But newer UARTs have a buffer of some bytes - and those bytes made the difference. ...
    (microsoft.public.dotnet.framework.compactframework)
  • Re: [PATCH] 8250 UART backup timer
    ... Diva UARTs). ... RX interrupt kicks it into working again (ie. an unattended reboot could ... and removes races in the bug detection code. ...
    (Linux-Kernel)
  • Re: Changeing SYSINTR_MAXIMUM
    ... If not, i.e. if you have enough interrupt lines for all your UARTs, make ... special serial driver and probably special OEM code to handle the interrupt ...
    (microsoft.public.windowsce.platbuilder)