On Sat, Feb 09, 2013 at 10:31:05PM +0000, Grant Likely wrote: > If it is a probe function, then yes the __init annotations need to be > removed or the driver needs to use platform_driver_probe(). This has > been the model as long as I can remember. As long as a driver has a > .probe hook, the driver core can call it at any time. Deferred probe > has only exposed the issue. > > If you want to discard the .probe() hook, then the probe() pointer > needs to be cleared from the driver structure before discarding the > sections. Otherwise the driver core can still call it which is what > happens in deferred probe and can happen if a device gets unbound from > a driver and then re-attached. You're talking about something completely different on the assumption that what is being talked about is the probe hook. It isn't. It's a path for the console initialization which has _always_ been __init marked since the dawn of time, because modules are not supposed to be calling that path. What has been exposed is that console drivers which have resources which are not immediately available no longer have the same guarantees that they used to have (that is, they will be called before the __init section is given away.) Remember: console drivers used not to support removal of themselves. Many still do not support that - in fact, these do not on the basis that they call register_console() but not unregister_console(): drivers/net/ethernet/sgi/ioc3-eth.c drivers/s390/char/con3215.c drivers/s390/char/con3270.c drivers/s390/char/sclp_con.c drivers/s390/char/sclp_vt220.c drivers/tty/amiserial.c drivers/tty/bfin_jtag_comm.c drivers/tty/ehv_bytechan.c drivers/tty/hvc/hvsi.c drivers/tty/serial/21285.c drivers/tty/serial/68328serial.c drivers/tty/serial/8250/8250.c drivers/tty/serial/8250/8250_early.c drivers/tty/serial/altera_jtaguart.c drivers/tty/serial/altera_uart.c drivers/tty/serial/apbuart.c drivers/tty/serial/arc_uart.c drivers/tty/serial/atmel_serial.c drivers/tty/serial/bcm63xx_uart.c drivers/tty/serial/bfin_sport_uart.c drivers/tty/serial/bfin_uart.c drivers/tty/serial/cpm_uart/cpm_uart_core.c drivers/tty/serial/dz.c drivers/tty/serial/lantiq.c drivers/tty/serial/lpc32xx_hs.c drivers/tty/serial/m32r_sio.c drivers/tty/serial/mcf.c drivers/tty/serial/mpc52xx_uart.c drivers/tty/serial/mpsc.c drivers/tty/serial/netx-serial.c drivers/tty/serial/nwpserial.c drivers/tty/serial/pmac_zilog.c drivers/tty/serial/pnx8xxx_uart.c drivers/tty/serial/sa1100.c drivers/tty/serial/samsung.c drivers/tty/serial/sb1250-duart.c drivers/tty/serial/serial_core.c drivers/tty/serial/serial_ks8695.c drivers/tty/serial/serial_txx9.c drivers/tty/serial/sh-sci.c drivers/tty/serial/sirfsoc_uart.c drivers/tty/serial/uartlite.c drivers/tty/serial/vr41xx_siu.c drivers/tty/serial/xilinx_uartps.c drivers/tty/serial/zs.c drivers/tty/vt/vt.c -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html