@Christian The patch "[PATCH 1/7] Add termios2 support to linux-user" looks good to me. Except for the extra two fields in struct termios2 it follows what is done for struct termios.
I added the patch on top of origin/master and it resolves the issue both on arm64 and on riscv64. Once https://code.launchpad.net/~slyon/ubuntu/+source/qemu/+git/qemu/+merge/496788 is accepted, we should go ahead with this patch. -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/2133804 Title: QEMU does not emulate IOCTL TCGETS2 Status in QEMU: New Status in qemu package in Ubuntu: Confirmed Status in qemu source package in Jammy: Confirmed Status in qemu source package in Noble: Confirmed Status in qemu source package in Plucky: Confirmed Status in qemu source package in Questing: Confirmed Status in qemu source package in Resolute: Confirmed Bug description: In Ubuntu 25.10 we moved to glibc 2.42. Here glibc has changed the implementation of isatty(). It now uses IOCTL TCGETS2 instead of TCGETS. TCGETS2 is not emulated by static QEMU (qemu-riscv64, qemu- arm64, ...). This leads to failures in containers for foreign architectures. E.g. no console prompt is displayed. A detailed analysis is contained in LP #2133188. A proper implementation of the missing IOCTLs will include: Functions: in linux-user/syscall.c: host_to_target_termios2() target_to_host_termios2() print_termios2() Definitions: in linux-user/syscall.c #define termios2 host_termios2 in linux-user/syscall_types.h STRUCT_SPECIAL(termios2) in linux-user/ioctls.h: IOCTL(TCGETS2, IOC_R, MK_PTR(MK_STRUCT(STRUCT_termios2))) IOCTL(TCSETS2, IOC_W, MK_PTR(MK_STRUCT(STRUCT_termios2))) IOCTL(TCSETSF2, IOC_W, MK_PTR(MK_STRUCT(STRUCT_termios2))) IOCTL(TCSETSW2, IOC_W, MK_PTR(MK_STRUCT(STRUCT_termios2))) in linux-user/user-internals.h: void print_termios2(void *arg); To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/2133804/+subscriptions
