• Jiri Slaby's avatar
    tty: cumulate and document tty_struct::flow* members · 6e94dbc7
    Jiri Slaby authored
    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 c545b66c (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: default avatarJiri 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.czSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    6e94dbc7
vt.c 113 KB