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@xxxxxxxxxx> > --- > 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