On 04/12/2021 20:57, Sam Protsenko wrote: > On modern Exynos SoCs (like Exynos850) the UART can be implemented as a > part of USI IP-core. In such case, USI driver is used to initialize USI > registers, and it also calls of_platform_populate() to instantiate all > sub-nodes (e.g. serial node) of USI node. When serial driver is > built-in, but USI driver is a module, and CONFIG_SERIAL_SAMSUNG_CONSOLE > is enabled, next call chain will happen when loading USI module from > user space: > > usi_init > v > usi_probe > v > of_platform_populate > v > s3c24xx_serial_probe > v > uart_add_one_port > v > uart_configure_port > v > register_console > v > try_enable_new_console > v > s3c24xx_serial_console_setup > > But because the serial driver is built-in, and > s3c24xx_serial_console_setup() is marked with __init keyword, that > symbol will discarded and long gone by that time already, causing failed > paging request. > > That happens during the next config combination: > > EXYNOS_USI=m > SERIAL_SAMSUNG=y > SERIAL_SAMSUNG_CONSOLE=y > > That config should be completely possible, so rather than limiting > SERIAL_SAMSUNG choice to "m" only when USI=m, remove __init keyword for > all affected functions. > > Signed-off-by: Sam Protsenko <semen.protsenko@xxxxxxxxxx> > --- > Changes in v3: > - (none) > > Changes in v2: > - This patch is added in v2 > > drivers/tty/serial/samsung_tty.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxxxxx> Best regards, Krzysztof