Hi, As Icenowy has pointed out, there is no termios2 for ppc. The TCGETS2 constant for ppc in glibc is not actually usable in user code. However, this gave me an idea...
On 10/31/25 21:26, Luca Bonissi wrote: > >From 2aa0a13da0da6e3a804359f24cc1298b97cda45c Mon Sep 17 00:00:00 2001 > From: Luca Bonissi <[email protected]> > Date: Fri, 31 Oct 2025 13:31:36 +0100 > Subject: [PATCH 5/7] Add termios2 support to ppc target > > Signed-off-by: Luca Bonissi <[email protected]> > --- > linux-user/ppc/termbits.h | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/linux-user/ppc/termbits.h b/linux-user/ppc/termbits.h > index eb226e0999..ae6ee8897c 100644 > --- a/linux-user/ppc/termbits.h > +++ b/linux-user/ppc/termbits.h > @@ -20,6 +20,28 @@ struct target_termios { > target_speed_t c_ospeed; /* output speed */ > }; > > +struct target_termios2 { > + target_tcflag_t c_iflag; /* input mode flags */ > + target_tcflag_t c_oflag; /* output mode flags */ > + target_tcflag_t c_cflag; /* control mode flags */ > + target_tcflag_t c_lflag; /* local mode flags */ > + target_cc_t c_cc[TARGET_NCCS]; /* control characters */ > + target_cc_t c_line; /* line discipline */ > + target_speed_t c_ispeed; /* input speed */ > + target_speed_t c_ospeed; /* output speed */ > +}; > + The "nonsensical" target_termios2 here is identical to target_termios. So, can we simply *rename* target_termios into target_termios2, and also rename the constants like these to add a "2": #define TARGET_TCGETS TARGET_IOR('t', 19, struct target_termios) #define TARGET_TCSETS TARGET_IOW('t', 20, struct target_termios) #define TARGET_TCSETSW TARGET_IOW('t', 21, struct target_termios) #define TARGET_TCSETSF TARGET_IOW('t', 22, struct target_termios) So that we repurpose the generic termios2 code to handle termios for ppc? This would look like we're translating ppc guest TCGETS into host TCGETS2, but the code would be written like it's doing a straight ppc guest fake-TCGETS2 to host TCGETS2 translation. Essentially, instead of thinking of ppc as "termios is different, and there's no termios2", we can think of it as "termios2 only, no termios". This would be ABI compatible with user programs and support the non-standard baud rates use case that are checked in the glibc test suite on ppc guest. Icenowy's suggestion [1] to fix ppc host support basically does the corresponding thing on the ppc host side. This looks slightly less cursed than my idea but is basically the same deal. Some extra handling may be needed to print the correct words in syscall trace output. Vivian "dramforever" Wang [1]: https://lore.kernel.org/qemu-devel/[email protected]/
