Re: [PATCH v3 5/5] tty: serial: samsung: Fix console registration from module

From: Krzysztof Kozlowski
Date: Mon Dec 13 2021 - 06:39:35 EST


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