aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/linux/serial_core.h
diff options
context:
space:
mode:
authorDmitry Safonov <dima@arista.com>2019-12-13 00:06:01 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2019-12-17 14:48:51 +0100
commit7e5ed9f5e012f21a1514edcf8c35b9b4cfbd96c3 (patch)
treecb36e30cdce1eae70b8eb1934e129731f84ae7e5 /include/linux/serial_core.h
parentsysrq: Remove sysrq_handler_registered (diff)
downloadwireguard-linux-7e5ed9f5e012f21a1514edcf8c35b9b4cfbd96c3.tar.xz
wireguard-linux-7e5ed9f5e012f21a1514edcf8c35b9b4cfbd96c3.zip
serial: Move sysrq members above
At the current place members those follow are: : upf_t flags; : upstat_t status; : int hw_stopped; : unsigned int mctrl; : unsigned int timeout; : unsigned int type; : const struct uart_ops *ops; Together, they give (*ops) 8-byte align on 64-bit platforms. And `sysrq_ch` introduces 4-byte padding. On the other side, above: : struct device *dev; : unsigned char hub6; : unsigned char suspended; : unsigned char unused[2]; : const char *name; Adds another 4-byte padding. Moving sysrq members just before `hub6` allows to save 8 bytes per-uart_port on 64-bit platforms: On my gcc, x86_64 sizeof(struct uart_port) goes from 528 to 520. Signed-off-by: Dmitry Safonov <dima@arista.com> Link: https://lore.kernel.org/r/20191213000657.931618-3-dima@arista.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/serial_core.h')
-rw-r--r--include/linux/serial_core.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index 2b78cc734719..bbbe57bf5163 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -161,11 +161,6 @@ struct uart_port {
struct uart_icount icount; /* statistics */
struct console *cons; /* struct console, if any */
-#if defined(CONFIG_SERIAL_CORE_CONSOLE) || defined(SUPPORT_SYSRQ)
- unsigned long sysrq; /* sysrq timeout */
- unsigned int sysrq_ch; /* char for sysrq */
-#endif
-
/* flags must be updated while holding port mutex */
upf_t flags;
@@ -244,6 +239,12 @@ struct uart_port {
resource_size_t mapbase; /* for ioremap */
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 hub6; /* this should be in the 8250 driver */
unsigned char suspended;
unsigned char unused[2];