Jiri Slaby 6e94dbc7a4 tty: cumulate and document tty_struct::flow* members
Group the flow flags under a single struct called flow. The new struct
contains 'stopped' and 'tco_stopped' bools which used to be bits in a
bitfield. The struct also contains the lock protecting them to
potentially share the same cache line.

Note that commit c545b66c6922b (tty: Serialize tcflow() with other tty
flow control changes) added a padding to the original bitfield. It was
for the bitfield to occupy a whole 64b word to avoid interferring stores
on Alpha (cannot we evaporate this arch with weird implications to C
code yet?). But it doesn't work as expected as the padding
(tty_struct::unused) is aligned to a 8B boundary too and occupies some
bytes from the next word.

So make it reliable by:
1) setting __aligned of the struct -- that aligns the start, and
2) making 'unsigned long unused[0]' as the last member of the struct --
   pads the end.

This is also the perfect time to start the documentation of tty_struct
where all this lives. So we start by documenting what these bools
actually serve for. And why we do all the alignment dances. Only the few
up-to-date information from the Theodore's comment made it into this new
Kerneldoc comment.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: "Maciej W. Rozycki" <macro@orcam.me.uk>
Link: https://lore.kernel.org/r/20210505091928.22010-13-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-05-13 16:57:16 +02:00
..
2021-04-27 13:42:11 -07:00
2021-05-05 13:24:11 -07:00
2021-04-18 09:36:56 +03:00
2021-05-07 11:35:12 -07:00
2021-04-26 12:11:52 -07:00
2021-05-05 13:24:11 -07:00
2021-05-01 10:14:08 -07:00
2021-05-01 10:14:08 -07:00
2021-05-04 11:24:46 -07:00
2021-04-28 15:59:13 -07:00
2021-04-26 12:11:52 -07:00
2021-05-05 12:39:29 -07:00
2021-05-09 13:42:39 -07:00
2021-04-27 18:09:44 -07:00
2021-04-26 15:03:23 -07:00
2021-05-01 10:14:08 -07:00
2021-04-26 16:32:11 -07:00
2021-05-07 11:35:12 -07:00
2021-05-05 13:24:11 -07:00
2021-05-01 10:14:08 -07:00
2021-04-28 15:59:13 -07:00
2021-04-13 14:50:57 -07:00
2021-05-01 10:14:08 -07:00
2021-04-29 11:57:23 -07:00
2021-05-07 14:49:18 -07:00
2021-05-01 10:14:08 -07:00
2021-05-05 12:53:16 -07:00
2021-04-28 15:59:13 -07:00
2021-05-04 11:13:33 -07:00
2021-05-05 13:24:11 -07:00
2021-05-03 12:15:21 -07:00
2021-05-08 10:44:36 -07:00
2021-05-01 09:33:00 -07:00
2021-04-30 12:48:14 -07:00
2021-05-08 10:44:36 -07:00
2021-04-26 12:11:52 -07:00
2021-04-28 17:22:10 -07:00
2021-05-01 09:33:00 -07:00
2021-05-05 13:31:39 -07:00
2021-04-28 15:59:13 -07:00
2021-05-05 13:31:39 -07:00