I worked around this by moving setserial from the end of rc.local to
the start of my gpm start script.
The exact code that does this is:
if (state->irq && (!IRQ_ports[state->irq] ||
!IRQ_ports[state->irq]->next_port)) {
if (IRQ_ports[state->irq]) {
+#ifdef CONFIG_SERIAL_SHARE_IRQ
free_irq(state->irq, NULL);
+#ifdef CONFIG_SERIAL_MULTIPORT
if (rs_multiport[state->irq].port1)
handler = rs_interrupt_multi;
else
+#endif
handler = rs_interrupt;
+#else
+ return -EBUSY;
+#endif /* CONFIG_SERIAL_SHARE_IRQ */
-- Pekka Pietikäinen, Net People Ltd., Oulu, Finland