Re: [PATCH 03/58] serial_core: Un-ifdef sysrq SUPPORT_SYSRQ

Greg Kroah-Hartman
2019-12-17T13:51:40Z

On Fri, Dec 13, 2019 at 12:06:02AM +0000, Dmitry Safonov wrote:
> The SUPPORT_SYSRQ is messy: every .c source should define it before
> including "serial_core.h" if sysrq is supported or struct uart_port will
> differ in sizes. Also this prevents moving to serial_core.c functions:
> uart_handle_sysrq_char(), uart_prepare_sysrq_char(),
> uart_unlock_and_check_sysrq().
>
> It doesn't save many bytes in the structure, and a better way to reduce
> it's size would be making rs485 and iso7816 pointers.
>
> Introduce `has_sysrq` member to be used by serial line drivers further.
>
> Signed-off-by: Dmitry Safonov <dima@arista.com>
> ---
> include/linux/serial_core.h | 77 +++++++++++++++++++++----------------
> 1 file changed, 43 insertions(+), 34 deletions(-)
>
> diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
> index bbbe57bf5163..5f761c399282 100644
> --- a/include/linux/serial_core.h
> +++ b/include/linux/serial_core.h
> @@ -240,14 +240,13 @@ struct uart_port {
> resource_size_t mapsize;
> struct device *dev; /* parent device */
>
> -#if defined(CONFIG_SERIAL_CORE_CONSOLE) || defined(SUPPORT_SYSRQ)
> unsigned long sysrq; /* sysrq timeout */
> unsigned int sysrq_ch; /* char for sysrq */
> -#endif
> + unsigned char has_sysrq;
>
> unsigned char hub6; /* this should be in the 8250 driver */
> unsigned char suspended;
> - unsigned char unused[2];

Ugh, the samsung driver was using both of these fields to overload
things for it's own use :(

It's not your fault, I'll go fix up that driver first before applying
this one.

bah, what a horrid hack they did...

greg k-h