serial: serial_irq() and descendants can be __init ... as being solely called from smp_intr_init(), which itself is marked such. Signed-off-by: Jan Beulich --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -361,7 +361,7 @@ static void __init ns16550_endboot(struc #define ns16550_endboot NULL #endif -static int ns16550_irq(struct serial_port *port) +static int __init ns16550_irq(struct serial_port *port) { struct ns16550 *uart = port->uart; return ((uart->irq > 0) ? uart->irq : -1); --- a/xen/drivers/char/pl011.c +++ b/xen/drivers/char/pl011.c @@ -215,7 +215,7 @@ static int pl011_getc(struct serial_port return 1; } -static int pl011_irq(struct serial_port *port) +static int __init pl011_irq(struct serial_port *port) { struct pl011 *uart = port->uart; return ((uart->irq > 0) ? uart->irq : -1); --- a/xen/drivers/char/serial.c +++ b/xen/drivers/char/serial.c @@ -475,7 +475,7 @@ void __init serial_endboot(void) com[i].driver->endboot(&com[i]); } -int serial_irq(int idx) +int __init serial_irq(int idx) { if ( (idx >= 0) && (idx < ARRAY_SIZE(com)) && com[idx].driver && com[idx].driver->irq )