* [PULL v2 00/11] Linux user for v11 patches
@ 2026-01-24 8:52 deller
2026-01-24 8:52 ` [PULL v2 01/11] linux-user: update statx emulation deller
` (11 more replies)
0 siblings, 12 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Helge Deller <deller@gmx.de>
The following changes since commit 2339d0a1cfac6ecc667e6e062a593865c1541c35:
Merge tag 'hw-misc-20260120' of https://github.com/philmd/qemu into staging (2026-01-21 07:39:57 +1100)
are available in the Git repository at:
https://github.com/hdeller/qemu-hppa.git tags/linux-user-for-v11-pull-request
for you to fetch changes up to 5db961f92b38b2a0f9db50b47ef3a718962b374f:
linux-user: Fix MADV_XXX constants on hppa target (2026-01-24 09:47:00 +0100)
----------------------------------------------------------------
linux-user: statx() syscall, termios2 support and futext() syscall fixes
v2:
Fix build error in which CentOS9 is lacking the definition of MADV_COLLAPSE
----------------------------------------------------------------
Andreas Schwab (1):
linux-user: update statx emulation
Helge Deller (2):
linux-user: strace: Fix 5th argument of futex syscall
linux-user: Fix MADV_XXX constants on hppa target
Icenowy Zheng (1):
linux-user: fixup termios2 related things on PowerPC
Luca Bonissi (6):
linux-user: Add termios2 support
linux-user: Add termios2 support to alpha target
linux-user: Add termios2 support to hppa target
linux-user: Add termios2 support to mips target
linux-user: Add termios2 support to sh4 target
linux-user: Add termios2 support to sparc target
Vivian Wang (1):
linux-user: Add missing termios baud rates
linux-user/alpha/termbits.h | 30 +++++
linux-user/generic/termbits.h | 2 +-
linux-user/hppa/termbits.h | 45 +++++++-
linux-user/ioctls.h | 6 +
linux-user/mips/termbits.h | 35 +++++-
linux-user/ppc/termbits.h | 1 +
linux-user/sh4/termbits.h | 51 ++++++---
linux-user/sparc/termbits.h | 33 +++++-
linux-user/strace.c | 76 ++++++++++++-
linux-user/syscall.c | 201 ++++++++++++++++++++++++++++++----
linux-user/syscall_defs.h | 6 +-
linux-user/syscall_types.h | 3 +
linux-user/user-internals.h | 3 +
13 files changed, 449 insertions(+), 43 deletions(-)
--
2.52.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PULL v2 01/11] linux-user: update statx emulation
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
@ 2026-01-24 8:52 ` deller
2026-01-24 8:52 ` [PULL v2 02/11] linux-user: Add termios2 support deller
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Andreas Schwab <schwab@suse.de>
Signed-off-by: Andreas Schwab <schwab@suse.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Helge Deller <deller@gmx.de>
---
linux-user/syscall.c | 3 +++
linux-user/syscall_defs.h | 6 +++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 3601715769..24046c7eeb 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7882,6 +7882,9 @@ static inline abi_long host_to_target_statx(struct target_statx *host_stx,
__put_user(host_stx->stx_rdev_minor, &target_stx->stx_rdev_minor);
__put_user(host_stx->stx_dev_major, &target_stx->stx_dev_major);
__put_user(host_stx->stx_dev_minor, &target_stx->stx_dev_minor);
+ __put_user(host_stx->stx_mnt_id, &target_stx->stx_mnt_id);
+ __put_user(host_stx->stx_dio_mem_align, &target_stx->stx_dio_mem_align);
+ __put_user(host_stx->stx_dio_offset_align, &target_stx->stx_dio_offset_align);
unlock_user_struct(target_stx, target_addr, 1);
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index cd9ff709b8..6ae6e1fa13 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -2734,7 +2734,11 @@ struct target_statx {
abi_uint stx_dev_major; /* ID of device containing file [uncond] */
abi_uint stx_dev_minor;
/* 0x90 */
- abi_ullong __spare2[14]; /* Spare space for future expansion */
+ abi_ullong stx_mnt_id;
+ abi_uint stx_dio_mem_align;
+ abi_uint stx_dio_offset_align;
+ /* 0xa0 */
+ abi_ullong __spare2[12]; /* Spare space for future expansion */
/* 0x100 */
};
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 02/11] linux-user: Add termios2 support
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
2026-01-24 8:52 ` [PULL v2 01/11] linux-user: update statx emulation deller
@ 2026-01-24 8:52 ` deller
2026-01-24 8:52 ` [PULL v2 03/11] linux-user: Add termios2 support to alpha target deller
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Luca Bonissi <qemu@bonslack.org>
Signed-off-by: Luca Bonissi <qemu@bonslack.org>
Link: https://lore.kernel.org/qemu-devel/745f18b6-ee62-4903-9a56-dcb903b610cf@bonslack.org
Reviewed-by: Helge Deller <deller@gmx.de>
Tested-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
linux-user/ioctls.h | 6 +++
linux-user/strace.c | 69 ++++++++++++++++++++++++++++++
linux-user/syscall.c | 84 +++++++++++++++++++++++++++++++++++++
linux-user/syscall_types.h | 3 ++
linux-user/user-internals.h | 3 ++
5 files changed, 165 insertions(+)
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index 2f62fd2cb9..6ecfe6306e 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -1,5 +1,11 @@
/* emulated ioctl list */
+#ifdef TARGET_TCGETS2
+ IOCTL(TCGETS2, IOC_R, MK_PTR(MK_STRUCT(STRUCT_termios2)))
+ IOCTL(TCSETS2, IOC_W, MK_PTR(MK_STRUCT(STRUCT_termios2)))
+ IOCTL(TCSETSW2, IOC_W, MK_PTR(MK_STRUCT(STRUCT_termios2)))
+ IOCTL(TCSETSF2, IOC_W, MK_PTR(MK_STRUCT(STRUCT_termios2)))
+#endif
IOCTL(TCGETS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_termios)))
IOCTL(TCSETS, IOC_W, MK_PTR(MK_STRUCT(STRUCT_termios)))
IOCTL(TCSETSF, IOC_W, MK_PTR(MK_STRUCT(STRUCT_termios)))
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 758c5d32b6..18bc6c800c 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -1935,6 +1935,75 @@ print_termios(void *arg)
qemu_log("}");
}
+#ifdef TARGET_TCGETS2
+void
+print_termios2(void *arg)
+{
+ const struct target_termios2 *target = arg;
+
+ target_tcflag_t iflags = tswap32(target->c_iflag);
+ target_tcflag_t oflags = tswap32(target->c_oflag);
+ target_tcflag_t cflags = tswap32(target->c_cflag);
+ target_tcflag_t lflags = tswap32(target->c_lflag);
+
+ qemu_log("{");
+
+ qemu_log("c_iflag = ");
+ print_flags(termios_iflags, iflags, 0);
+
+ qemu_log("c_oflag = ");
+ target_tcflag_t oflags_clean = oflags & ~(TARGET_NLDLY | TARGET_CRDLY |
+ TARGET_TABDLY | TARGET_BSDLY |
+ TARGET_VTDLY | TARGET_FFDLY);
+ print_flags(termios_oflags, oflags_clean, 0);
+ if (oflags & TARGET_NLDLY) {
+ print_enums(termios_oflags_NLDLY, oflags & TARGET_NLDLY, 0);
+ }
+ if (oflags & TARGET_CRDLY) {
+ print_enums(termios_oflags_CRDLY, oflags & TARGET_CRDLY, 0);
+ }
+ if (oflags & TARGET_TABDLY) {
+ print_enums(termios_oflags_TABDLY, oflags & TARGET_TABDLY, 0);
+ }
+ if (oflags & TARGET_BSDLY) {
+ print_enums(termios_oflags_BSDLY, oflags & TARGET_BSDLY, 0);
+ }
+ if (oflags & TARGET_VTDLY) {
+ print_enums(termios_oflags_VTDLY, oflags & TARGET_VTDLY, 0);
+ }
+ if (oflags & TARGET_FFDLY) {
+ print_enums(termios_oflags_FFDLY, oflags & TARGET_FFDLY, 0);
+ }
+
+ qemu_log("c_cflag = ");
+ if (cflags & TARGET_CBAUD) {
+ print_enums(termios_cflags_CBAUD, cflags & TARGET_CBAUD, 0);
+ }
+ if (cflags & TARGET_CSIZE) {
+ print_enums(termios_cflags_CSIZE, cflags & TARGET_CSIZE, 0);
+ }
+ target_tcflag_t cflags_clean = cflags & ~(TARGET_CBAUD | TARGET_CSIZE);
+ print_flags(termios_cflags, cflags_clean, 0);
+
+ qemu_log("c_lflag = ");
+ print_flags(termios_lflags, lflags, 0);
+
+ qemu_log("c_ispeed = ");
+ print_raw_param("%u", tswap32(target->c_ispeed), 0);
+
+ qemu_log("c_ospeed = ");
+ print_raw_param("%u", tswap32(target->c_ospeed), 0);
+
+ qemu_log("c_cc = ");
+ qemu_log("\"%s\",", target->c_cc);
+
+ qemu_log("c_line = ");
+ print_raw_param("\'%c\'", target->c_line, 1);
+
+ qemu_log("}");
+}
+#endif
+
#undef UNUSED
#ifdef TARGET_NR_accept
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 24046c7eeb..d80d3ded7b 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -86,6 +86,7 @@
#endif
#define termios host_termios
+#define termios2 host_termios2
#define winsize host_winsize
#define termio host_termio
#define sgttyb host_sgttyb /* same as target */
@@ -5891,6 +5892,89 @@ static const StructEntry struct_termios_def = {
.print = print_termios,
};
+#ifdef TARGET_TCGETS2
+static void target_to_host_termios2 (void *dst, const void *src)
+{
+ struct host_termios2 *host = dst;
+ const struct target_termios2 *target = src;
+
+ host->c_iflag =
+ target_to_host_bitmask(tswap32(target->c_iflag), iflag_tbl);
+ host->c_oflag =
+ target_to_host_bitmask(tswap32(target->c_oflag), oflag_tbl);
+ host->c_cflag =
+ target_to_host_bitmask(tswap32(target->c_cflag), cflag_tbl);
+ host->c_lflag =
+ target_to_host_bitmask(tswap32(target->c_lflag), lflag_tbl);
+ host->c_line = target->c_line;
+ host->c_ispeed = tswap32(target->c_ispeed);
+ host->c_ospeed = tswap32(target->c_ospeed);
+
+ memset(host->c_cc, 0, sizeof(host->c_cc));
+ host->c_cc[VINTR] = target->c_cc[TARGET_VINTR];
+ host->c_cc[VQUIT] = target->c_cc[TARGET_VQUIT];
+ host->c_cc[VERASE] = target->c_cc[TARGET_VERASE];
+ host->c_cc[VKILL] = target->c_cc[TARGET_VKILL];
+ host->c_cc[VEOF] = target->c_cc[TARGET_VEOF];
+ host->c_cc[VTIME] = target->c_cc[TARGET_VTIME];
+ host->c_cc[VMIN] = target->c_cc[TARGET_VMIN];
+ host->c_cc[VSWTC] = target->c_cc[TARGET_VSWTC];
+ host->c_cc[VSTART] = target->c_cc[TARGET_VSTART];
+ host->c_cc[VSTOP] = target->c_cc[TARGET_VSTOP];
+ host->c_cc[VSUSP] = target->c_cc[TARGET_VSUSP];
+ host->c_cc[VEOL] = target->c_cc[TARGET_VEOL];
+ host->c_cc[VREPRINT] = target->c_cc[TARGET_VREPRINT];
+ host->c_cc[VDISCARD] = target->c_cc[TARGET_VDISCARD];
+ host->c_cc[VWERASE] = target->c_cc[TARGET_VWERASE];
+ host->c_cc[VLNEXT] = target->c_cc[TARGET_VLNEXT];
+ host->c_cc[VEOL2] = target->c_cc[TARGET_VEOL2];
+}
+
+static void host_to_target_termios2 (void *dst, const void *src)
+{
+ struct target_termios2 *target = dst;
+ const struct host_termios2 *host = src;
+
+ target->c_iflag =
+ tswap32(host_to_target_bitmask(host->c_iflag, iflag_tbl));
+ target->c_oflag =
+ tswap32(host_to_target_bitmask(host->c_oflag, oflag_tbl));
+ target->c_cflag =
+ tswap32(host_to_target_bitmask(host->c_cflag, cflag_tbl));
+ target->c_lflag =
+ tswap32(host_to_target_bitmask(host->c_lflag, lflag_tbl));
+ target->c_line = host->c_line;
+ target->c_ispeed = tswap32(host->c_ispeed);
+ target->c_ospeed = tswap32(host->c_ospeed);
+
+ memset(target->c_cc, 0, sizeof(target->c_cc));
+ target->c_cc[TARGET_VINTR] = host->c_cc[VINTR];
+ target->c_cc[TARGET_VQUIT] = host->c_cc[VQUIT];
+ target->c_cc[TARGET_VERASE] = host->c_cc[VERASE];
+ target->c_cc[TARGET_VKILL] = host->c_cc[VKILL];
+ target->c_cc[TARGET_VEOF] = host->c_cc[VEOF];
+ target->c_cc[TARGET_VTIME] = host->c_cc[VTIME];
+ target->c_cc[TARGET_VMIN] = host->c_cc[VMIN];
+ target->c_cc[TARGET_VSWTC] = host->c_cc[VSWTC];
+ target->c_cc[TARGET_VSTART] = host->c_cc[VSTART];
+ target->c_cc[TARGET_VSTOP] = host->c_cc[VSTOP];
+ target->c_cc[TARGET_VSUSP] = host->c_cc[VSUSP];
+ target->c_cc[TARGET_VEOL] = host->c_cc[VEOL];
+ target->c_cc[TARGET_VREPRINT] = host->c_cc[VREPRINT];
+ target->c_cc[TARGET_VDISCARD] = host->c_cc[VDISCARD];
+ target->c_cc[TARGET_VWERASE] = host->c_cc[VWERASE];
+ target->c_cc[TARGET_VLNEXT] = host->c_cc[VLNEXT];
+ target->c_cc[TARGET_VEOL2] = host->c_cc[VEOL2];
+}
+
+static const StructEntry struct_termios2_def = {
+ .convert = { host_to_target_termios2, target_to_host_termios2 },
+ .size = { sizeof(struct target_termios2), sizeof(struct host_termios2) },
+ .align = { __alignof__(struct target_termios2), __alignof__(struct host_termios2) },
+ .print = print_termios2,
+};
+#endif
+
/* If the host does not provide these bits, they may be safely discarded. */
#ifndef MAP_SYNC
#define MAP_SYNC 0
diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
index 6dd7a80ce5..ac45705acf 100644
--- a/linux-user/syscall_types.h
+++ b/linux-user/syscall_types.h
@@ -1,4 +1,7 @@
STRUCT_SPECIAL(termios)
+#ifdef TARGET_TCGETS2
+STRUCT_SPECIAL(termios2)
+#endif
STRUCT(winsize,
TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT)
diff --git a/linux-user/user-internals.h b/linux-user/user-internals.h
index 7099349ec8..067c02bb93 100644
--- a/linux-user/user-internals.h
+++ b/linux-user/user-internals.h
@@ -129,6 +129,9 @@ static inline uint64_t target_offset64(uint64_t word0, uint64_t word1)
#endif /* TARGET_ABI_BITS != 32 */
void print_termios(void *arg);
+#ifdef TARGET_TCGETS2
+void print_termios2(void *arg);
+#endif
/* ARM EABI and MIPS expect 64bit types aligned even on pairs or registers */
#ifdef TARGET_ARM
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 03/11] linux-user: Add termios2 support to alpha target
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
2026-01-24 8:52 ` [PULL v2 01/11] linux-user: update statx emulation deller
2026-01-24 8:52 ` [PULL v2 02/11] linux-user: Add termios2 support deller
@ 2026-01-24 8:52 ` deller
2026-01-24 8:52 ` [PULL v2 04/11] linux-user: Add termios2 support to hppa target deller
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Luca Bonissi <qemu@bonslack.org>
Signed-off-by: Luca Bonissi <qemu@bonslack.org>
Link: https://lore.kernel.org/qemu-devel/02dba951-1bcf-4c74-8a6a-f4f4aa5ce909@bonslack.org
Reviewed-by: Helge Deller <deller@gmx.de>
---
linux-user/alpha/termbits.h | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/linux-user/alpha/termbits.h b/linux-user/alpha/termbits.h
index 4a4b1e96f2..b7be23ea13 100644
--- a/linux-user/alpha/termbits.h
+++ b/linux-user/alpha/termbits.h
@@ -17,6 +17,29 @@ 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 (== c_cc[19]) */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+struct target_ktermios {
+ 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 (== c_cc[19]) */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+
/* c_cc characters */
#define TARGET_VEOF 0
#define TARGET_VEOL 1
@@ -247,6 +270,12 @@ struct target_termios {
#define TARGET_TIOCSBRK 0x5427 /* BSD compatibility */
#define TARGET_TIOCCBRK 0x5428 /* BSD compatibility */
#define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */
+#define TARGET_TCGETS2 TARGET_IOR('T', 0x2A, struct target_termios2)
+#define TARGET_TCSETS2 TARGET_IOW('T', 0x2B, struct target_termios2)
+#define TARGET_TCSETSW2 TARGET_IOW('T', 0x2C, struct target_termios2)
+#define TARGET_TCSETSF2 TARGET_IOW('T', 0x2D, struct target_termios2)
+#define TARGET_TIOCGRS485 TARGET_IOR('T', 0x2E, struct serial_rs485)
+#define TARGET_TIOCSRS485 TARGET_IOWR('T', 0x2F, struct serial_rs485)
#define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
#define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */
#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 04/11] linux-user: Add termios2 support to hppa target
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (2 preceding siblings ...)
2026-01-24 8:52 ` [PULL v2 03/11] linux-user: Add termios2 support to alpha target deller
@ 2026-01-24 8:52 ` deller
2026-01-24 8:53 ` [PULL v2 05/11] linux-user: Add termios2 support to mips target deller
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Luca Bonissi <qemu@bonslack.org>
Signed-off-by: Luca Bonissi <qemu@bonslack.org>
Link: https://lore.kernel.org/qemu-devel/ccf1be5c-9e2e-46f6-b303-d29888371fb0@bonslack.org
Reviewed-by: Helge Deller <deller@gmx.de>
---
linux-user/hppa/termbits.h | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/linux-user/hppa/termbits.h b/linux-user/hppa/termbits.h
index 11fd4eed62..645f17bf63 100644
--- a/linux-user/hppa/termbits.h
+++ b/linux-user/hppa/termbits.h
@@ -18,6 +18,29 @@ struct target_termios {
target_cc_t c_cc[TARGET_NCCS]; /* control characters */
};
+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_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+struct target_ktermios {
+ 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_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+
/* c_iflag bits */
#define TARGET_IGNBRK 0000001
#define TARGET_BRKINT 0000002
@@ -190,6 +213,12 @@ struct target_termios {
#define TARGET_TIOCSBRK 0x5427 /* BSD compatibility */
#define TARGET_TIOCCBRK 0x5428 /* BSD compatibility */
#define TARGET_TIOCGSID TARGET_IOR('T', 20, int)
+#define TARGET_TCGETS2 TARGET_IOR('T', 0x2A, struct target_termios2)
+#define TARGET_TCSETS2 TARGET_IOW('T', 0x2B, struct target_termios2)
+#define TARGET_TCSETSW2 TARGET_IOW('T', 0x2C, struct target_termios2)
+#define TARGET_TCSETSF2 TARGET_IOW('T', 0x2D, struct target_termios2)
+#define TARGET_TIOCGRS485 TARGET_IOR('T', 0x2E, struct serial_rs485)
+#define TARGET_TIOCSRS485 TARGET_IOWR('T', 0x2F, struct serial_rs485)
#define TARGET_TIOCGPTN TARGET_IOR('T', 0x30, unsigned int)
/* Get Pty Number (of pty-mux device) */
#define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int)
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 05/11] linux-user: Add termios2 support to mips target
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (3 preceding siblings ...)
2026-01-24 8:52 ` [PULL v2 04/11] linux-user: Add termios2 support to hppa target deller
@ 2026-01-24 8:53 ` deller
2026-01-24 8:53 ` [PULL v2 06/11] linux-user: Add termios2 support to sh4 target deller
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:53 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Luca Bonissi <qemu@bonslack.org>
Signed-off-by: Luca Bonissi <qemu@bonslack.org>
Link: https://lore.kernel.org/qemu-devel/361aa9c5-4464-4d27-8a2c-9ab767324530@bonslack.org
Reviewed-by: Helge Deller <deller@gmx.de>
---
linux-user/mips/termbits.h | 31 +++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/linux-user/mips/termbits.h b/linux-user/mips/termbits.h
index e8b4b58d87..27610f7c4d 100644
--- a/linux-user/mips/termbits.h
+++ b/linux-user/mips/termbits.h
@@ -18,6 +18,29 @@ struct target_termios {
target_cc_t c_cc[TARGET_NCCS]; /* control characters */
};
+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_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+struct target_ktermios {
+ 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_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+
/* c_iflag bits */
#define TARGET_IGNBRK 0000001
#define TARGET_BRKINT 0000002
@@ -227,10 +250,10 @@ struct target_termios {
#define TARGET_TIOCSBRK 0x5427 /* BSD compatibility */
#define TARGET_TIOCCBRK 0x5428 /* BSD compatibility */
#define TARGET_TIOCGSID 0x7416 /* Return the session ID of FD */
-#define TARGET_TCGETS2 TARGET_IOR('T', 0x2A, struct termios2)
-#define TARGET_TCSETS2 TARGET_IOW('T', 0x2B, struct termios2)
-#define TARGET_TCSETSW2 TARGET_IOW('T', 0x2C, struct termios2)
-#define TARGET_TCSETSF2 TARGET_IOW('T', 0x2D, struct termios2)
+#define TARGET_TCGETS2 TARGET_IOR('T', 0x2A, struct target_termios2)
+#define TARGET_TCSETS2 TARGET_IOW('T', 0x2B, struct target_termios2)
+#define TARGET_TCSETSW2 TARGET_IOW('T', 0x2C, struct target_termios2)
+#define TARGET_TCSETSF2 TARGET_IOW('T', 0x2D, struct target_termios2)
#define TARGET_TIOCGRS485 TARGET_IOR('T', 0x2E, struct serial_rs485)
#define TARGET_TIOCSRS485 TARGET_IOWR('T', 0x2F, struct serial_rs485)
#define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 06/11] linux-user: Add termios2 support to sh4 target
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (4 preceding siblings ...)
2026-01-24 8:53 ` [PULL v2 05/11] linux-user: Add termios2 support to mips target deller
@ 2026-01-24 8:53 ` deller
2026-01-24 8:53 ` [PULL v2 07/11] linux-user: Add termios2 support to sparc target deller
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:53 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Luca Bonissi <qemu@bonslack.org>
Signed-off-by: Luca Bonissi <qemu@bonslack.org>
Link: https://lore.kernel.org/qemu-devel/642b32de-2985-45d2-bbdf-c0b2e3ea0551@bonslack.org
Reviewed-by: Helge Deller <deller@gmx.de>
---
linux-user/sh4/termbits.h | 46 +++++++++++++++++++++++++++++----------
1 file changed, 34 insertions(+), 12 deletions(-)
diff --git a/linux-user/sh4/termbits.h b/linux-user/sh4/termbits.h
index 28e79f2c9a..cab6b1299e 100644
--- a/linux-user/sh4/termbits.h
+++ b/linux-user/sh4/termbits.h
@@ -18,6 +18,28 @@ struct target_termios {
target_cc_t c_cc[TARGET_NCCS]; /* control characters */
};
+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_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+struct target_ktermios {
+ 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_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
/* c_cc characters */
#define TARGET_VINTR 0
@@ -251,14 +273,17 @@ struct target_termios {
#define TARGET_TIOCNOTTY TARGET_IO('T', 34) /* 0x5422 */
#define TARGET_TIOCSETD TARGET_IOW('T', 35, int) /* 0x5423 */
#define TARGET_TIOCGETD TARGET_IOR('T', 36, int) /* 0x5424 */
-#define TARGET_TCSBRKP TARGET_IOW('T', 37, int) /* 0x5425 */ /* Needed for POSIX tcse
-ndbreak() */
+#define TARGET_TCSBRKP TARGET_IOW('T', 37, int) /* 0x5425 */ /* Needed for POSIX tcsendbreak() */
#define TARGET_TIOCSBRK TARGET_IO('T', 39) /* 0x5427 */ /* BSD compatibility */
#define TARGET_TIOCCBRK TARGET_IO('T', 40) /* 0x5428 */ /* BSD compatibility */
-#define TARGET_TIOCGSID TARGET_IOR('T', 41, pid_t) /* 0x5429 */ /* Return the session
-ID of FD */
-#define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-m
-ux device) */
+#define TARGET_TIOCGSID TARGET_IOR('T', 41, pid_t) /* 0x5429 */ /* Return the session ID of FD */
+#define TARGET_TCGETS2 TARGET_IOR('T', 0x2A, struct target_termios2)
+#define TARGET_TCSETS2 TARGET_IOW('T', 0x2B, struct target_termios2)
+#define TARGET_TCSETSW2 TARGET_IOW('T', 0x2C, struct target_termios2)
+#define TARGET_TCSETSF2 TARGET_IOW('T', 0x2D, struct target_termios2)
+#define TARGET_TIOCGRS485 TARGET_IOR('T', 0x2E, struct serial_rs485)
+#define TARGET_TIOCSRS485 TARGET_IOWR('T', 0x2F, struct serial_rs485)
+#define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
#define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */
#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */
@@ -270,8 +295,7 @@ ux device) */
#define TARGET_TIOCSLCKTRMIOS 0x5457
#define TARGET_TIOCSERGSTRUCT TARGET_IOR('T', 88, int) /* 0x5458 */ /* For d
ebugging only */
-#define TARGET_TIOCSERGETLSR TARGET_IOR('T', 89, unsigned int) /* 0x5459 */ /* Get line sta
-tus register */
+#define TARGET_TIOCSERGETLSR TARGET_IOR('T', 89, unsigned int) /* 0x5459 */ /* Get line status register */
/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
# define TARGET_TIOCSER_TEMT 0x01 /* Transmitter physically empty */
#define TARGET_TIOCSERGETMULTI TARGET_IOR('T', 90, int) /* 0x545A
@@ -279,9 +303,7 @@ tus register */
#define TARGET_TIOCSERSETMULTI TARGET_IOW('T', 91, int) /* 0x545B
*/ /* Set multiport config */
-#define TARGET_TIOCMIWAIT TARGET_IO('T', 92) /* 0x545C */ /* wait for a change on
-serial input line(s) */
-#define TARGET_TIOCGICOUNT TARGET_IOR('T', 93, int) /* 0x545D */ /* read
-serial port inline interrupt counts */
+#define TARGET_TIOCMIWAIT TARGET_IO('T', 92) /* 0x545C */ /* wait for a change on serial input line(s) */
+#define TARGET_TIOCGICOUNT TARGET_IOR('T', 93, int) /* 0x545D */ /* read serial port inline interrupt counts */
#endif
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 07/11] linux-user: Add termios2 support to sparc target
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (5 preceding siblings ...)
2026-01-24 8:53 ` [PULL v2 06/11] linux-user: Add termios2 support to sh4 target deller
@ 2026-01-24 8:53 ` deller
2026-01-24 8:53 ` [PULL v2 08/11] linux-user: Add missing termios baud rates deller
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:53 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Luca Bonissi <qemu@bonslack.org>
Signed-off-by: Luca Bonissi <qemu@bonslack.org>
Link: https://lore.kernel.org/qemu-devel/909d9d68-c6fe-4368-825c-6aa8fdbd3bbc@bonslack.org
Reviewed-by: Helge Deller <deller@gmx.de>
---
linux-user/sparc/termbits.h | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/linux-user/sparc/termbits.h b/linux-user/sparc/termbits.h
index 704bee1c42..588d7e8dcd 100644
--- a/linux-user/sparc/termbits.h
+++ b/linux-user/sparc/termbits.h
@@ -18,6 +18,28 @@ struct target_termios {
target_cc_t c_cc[TARGET_NCCS]; /* control characters */
};
+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_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
+struct target_ktermios {
+ 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_line; /* line discipline */
+ target_cc_t c_cc[TARGET_NCCS]; /* control characters */
+ target_speed_t c_ispeed; /* input speed */
+ target_speed_t c_ospeed; /* output speed */
+};
+
/* c_cc characters */
#define TARGET_VINTR 0
@@ -251,6 +273,12 @@ struct target_termios {
#define TARGET_TIOCGPGRP TARGET_IOR('t', 131, int)
#define TARGET_TIOCSCTTY TARGET_IO('t', 132)
#define TARGET_TIOCGSID TARGET_IOR('t', 133, int)
+#define TARGET_TCGETS2 TARGET_IOR('T', 12, struct target_termios2)
+#define TARGET_TCSETS2 TARGET_IOW('T', 13, struct target_termios2)
+#define TARGET_TCSETSW2 TARGET_IOW('T', 14, struct target_termios2)
+#define TARGET_TCSETSF2 TARGET_IOW('T', 15, struct target_termios2)
+#define TARGET_TIOCGRS485 TARGET_IOR('T', 0x41, struct serial_rs485)
+#define TARGET_TIOCSRS485 TARGET_IOWR('T', 0x42, struct serial_rs485)
/* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */
#define TARGET_TIOCGPTN TARGET_IOR('t', 134, unsigned int) /* Get Pty Number */
#define TARGET_TIOCSPTLCK TARGET_IOW('t', 135, int) /* Lock/unlock PTY */
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 08/11] linux-user: Add missing termios baud rates
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (6 preceding siblings ...)
2026-01-24 8:53 ` [PULL v2 07/11] linux-user: Add termios2 support to sparc target deller
@ 2026-01-24 8:53 ` deller
2026-01-24 8:53 ` [PULL v2 09/11] linux-user: fixup termios2 related things on PowerPC deller
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:53 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Vivian Wang <wangruikang@iscas.ac.cn>
Add several missing baud rates and inputs baud rates in cflag_tbl.
Add these missing definitions in termbits.h:
- TARGET_BOTHER for alpha, hppa, ppc, sh4, sparc
- TARGET_IBSHIFT for hppa, mips, ppc, sh4, sparc
- Missing standard baud rates for hppa
These are required for the glibc test tst-termios-linux.
Link: https://lore.kernel.org/qemu-devel/20251203-linux-user-higher-baud-rates-v2-1-e45b35224437@iscas.ac.cn
Signed-off-by: Vivian Wang <wangruikang@iscas.ac.cn>
Reviewed-by: Helge Deller <deller@gmx.de>
---
linux-user/alpha/termbits.h | 1 +
linux-user/generic/termbits.h | 2 +-
linux-user/hppa/termbits.h | 16 ++++++-
linux-user/mips/termbits.h | 4 +-
linux-user/ppc/termbits.h | 1 +
linux-user/sh4/termbits.h | 5 ++-
linux-user/sparc/termbits.h | 5 ++-
linux-user/syscall.c | 83 ++++++++++++++++++++++++++---------
8 files changed, 92 insertions(+), 25 deletions(-)
diff --git a/linux-user/alpha/termbits.h b/linux-user/alpha/termbits.h
index b7be23ea13..50cff34f3c 100644
--- a/linux-user/alpha/termbits.h
+++ b/linux-user/alpha/termbits.h
@@ -149,6 +149,7 @@ struct target_ktermios {
#define TARGET_B3000000 00034
#define TARGET_B3500000 00035
#define TARGET_B4000000 00036
+#define TARGET_BOTHER 00037
#define TARGET_CSIZE 00001400
#define TARGET_CS5 00000000
diff --git a/linux-user/generic/termbits.h b/linux-user/generic/termbits.h
index 6675e0d1ab..6cc5995981 100644
--- a/linux-user/generic/termbits.h
+++ b/linux-user/generic/termbits.h
@@ -157,7 +157,7 @@ struct target_ktermios {
#define TARGET_B3000000 0010015
#define TARGET_B3500000 0010016
#define TARGET_B4000000 0010017
-#define TARGET_CIBAUD 002003600000 /* input baud rate (not used) */
+#define TARGET_CIBAUD 002003600000 /* input baud rate */
#define TARGET_CMSPAR 010000000000 /* mark or space (stick) parity */
#define TARGET_CRTSCTS 020000000000 /* flow control */
diff --git a/linux-user/hppa/termbits.h b/linux-user/hppa/termbits.h
index 645f17bf63..9d1d1a1d12 100644
--- a/linux-user/hppa/termbits.h
+++ b/linux-user/hppa/termbits.h
@@ -123,14 +123,28 @@ struct target_ktermios {
#define TARGET_HUPCL 0002000
#define TARGET_CLOCAL 0004000
#define TARGET_CBAUDEX 0010000
+#define TARGET_BOTHER 0010000
#define TARGET_B57600 0010001
#define TARGET_B115200 0010002
#define TARGET_B230400 0010003
#define TARGET_B460800 0010004
-#define TARGET_CIBAUD 002003600000 /* input baud rate (not used) */
+#define TARGET_B500000 0010005
+#define TARGET_B576000 0010006
+#define TARGET_B921600 0010007
+#define TARGET_B1000000 0010010
+#define TARGET_B1152000 0010011
+#define TARGET_B1500000 0010012
+#define TARGET_B2000000 0010013
+#define TARGET_B2500000 0010014
+#define TARGET_B3000000 0010015
+#define TARGET_B3500000 0010016
+#define TARGET_B4000000 0010017
+#define TARGET_CIBAUD 002003600000 /* input baud rate */
#define TARGET_CMSPAR 010000000000 /* mark or space (stick) parity */
#define TARGET_CRTSCTS 020000000000 /* flow control */
+#define TARGET_IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
+
/* c_lflag bits */
#define TARGET_ISIG 0000001
#define TARGET_ICANON 0000002
diff --git a/linux-user/mips/termbits.h b/linux-user/mips/termbits.h
index 27610f7c4d..56b17441ee 100644
--- a/linux-user/mips/termbits.h
+++ b/linux-user/mips/termbits.h
@@ -139,10 +139,12 @@ struct target_ktermios {
#define TARGET_B3000000 0010015
#define TARGET_B3500000 0010016
#define TARGET_B4000000 0010017
-#define TARGET_CIBAUD 002003600000 /* input baud rate (not used) */
+#define TARGET_CIBAUD 002003600000 /* input baud rate */
#define TARGET_CMSPAR 010000000000 /* mark or space (stick) parity */
#define TARGET_CRTSCTS 020000000000 /* flow control */
+#define TARGET_IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
+
/* c_lflag bits */
#define TARGET_ISIG 0000001
#define TARGET_ICANON 0000002
diff --git a/linux-user/ppc/termbits.h b/linux-user/ppc/termbits.h
index eb226e0999..71b398c83a 100644
--- a/linux-user/ppc/termbits.h
+++ b/linux-user/ppc/termbits.h
@@ -129,6 +129,7 @@ struct target_termios {
#define TARGET_B3000000 00034
#define TARGET_B3500000 00035
#define TARGET_B4000000 00036
+#define TARGET_BOTHER 00037
#define TARGET_CSIZE 00001400
#define TARGET_CS5 00000000
diff --git a/linux-user/sh4/termbits.h b/linux-user/sh4/termbits.h
index cab6b1299e..861f861f6d 100644
--- a/linux-user/sh4/termbits.h
+++ b/linux-user/sh4/termbits.h
@@ -142,6 +142,7 @@ struct target_ktermios {
#define TARGET_HUPCL 0002000
#define TARGET_CLOCAL 0004000
#define TARGET_CBAUDEX 0010000
+#define TARGET_BOTHER 0010000
#define TARGET_B57600 0010001
#define TARGET_B115200 0010002
#define TARGET_B230400 0010003
@@ -157,10 +158,12 @@ struct target_ktermios {
#define TARGET_B3000000 0010015
#define TARGET_B3500000 0010016
#define TARGET_B4000000 0010017
-#define TARGET_CIBAUD 002003600000 /* input baud rate (not used) */
+#define TARGET_CIBAUD 002003600000 /* input baud rate */
#define TARGET_CMSPAR 010000000000 /* mark or space (stick) parity */
#define TARGET_CRTSCTS 020000000000 /* flow control */
+#define TARGET_IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
+
/* c_lflag bits */
#define TARGET_ISIG 0000001
#define TARGET_ICANON 0000002
diff --git a/linux-user/sparc/termbits.h b/linux-user/sparc/termbits.h
index 588d7e8dcd..f64ea87d97 100644
--- a/linux-user/sparc/termbits.h
+++ b/linux-user/sparc/termbits.h
@@ -150,6 +150,7 @@ struct target_ktermios {
#define TARGET_HUPCL 0x00000400
#define TARGET_CLOCAL 0x00000800
#define TARGET_CBAUDEX 0x00001000
+#define TARGET_BOTHER 0x00001000
/* We'll never see these speeds with the Zilogs, but for completeness... */
#define TARGET_B57600 0x00001001
#define TARGET_B115200 0x00001002
@@ -176,10 +177,12 @@ struct target_ktermios {
#define B3000000 0x00001011
#define B3500000 0x00001012
#define B4000000 0x00001013 */
-#define TARGET_CIBAUD 0x100f0000 /* input baud rate (not used) */
+#define TARGET_CIBAUD 0x100f0000 /* input baud rate */
#define TARGET_CMSPAR 0x40000000 /* mark or space (stick) parity */
#define TARGET_CRTSCTS 0x80000000 /* flow control */
+#define TARGET_IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
+
/* c_lflag bits */
#define TARGET_ISIG 0x00000001
#define TARGET_ICANON 0x00000002
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index d80d3ded7b..9443eb3a17 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5762,27 +5762,70 @@ static const bitmask_transtbl oflag_tbl[] = {
{ TARGET_FFDLY, TARGET_FF1, FFDLY, FF1 },
};
+#if defined(TARGET_CIBAUD) && defined(CIBAUD)
+
+# define BAUD_TRANSTBL(baud) \
+ { TARGET_CBAUD, TARGET_##baud, CBAUD, baud }, \
+ { TARGET_CIBAUD, TARGET_##baud << TARGET_IBSHIFT, CIBAUD, baud << IBSHIFT },
+
+#else
+
+/* Alpha in particular does not have CIBAUD/IBSHIFT */
+
+# define BAUD_TRANSTBL(baud) \
+ { TARGET_CBAUD, TARGET_##baud, CBAUD, baud },
+
+#endif
+
static const bitmask_transtbl cflag_tbl[] = {
- { TARGET_CBAUD, TARGET_B0, CBAUD, B0 },
- { TARGET_CBAUD, TARGET_B50, CBAUD, B50 },
- { TARGET_CBAUD, TARGET_B75, CBAUD, B75 },
- { TARGET_CBAUD, TARGET_B110, CBAUD, B110 },
- { TARGET_CBAUD, TARGET_B134, CBAUD, B134 },
- { TARGET_CBAUD, TARGET_B150, CBAUD, B150 },
- { TARGET_CBAUD, TARGET_B200, CBAUD, B200 },
- { TARGET_CBAUD, TARGET_B300, CBAUD, B300 },
- { TARGET_CBAUD, TARGET_B600, CBAUD, B600 },
- { TARGET_CBAUD, TARGET_B1200, CBAUD, B1200 },
- { TARGET_CBAUD, TARGET_B1800, CBAUD, B1800 },
- { TARGET_CBAUD, TARGET_B2400, CBAUD, B2400 },
- { TARGET_CBAUD, TARGET_B4800, CBAUD, B4800 },
- { TARGET_CBAUD, TARGET_B9600, CBAUD, B9600 },
- { TARGET_CBAUD, TARGET_B19200, CBAUD, B19200 },
- { TARGET_CBAUD, TARGET_B38400, CBAUD, B38400 },
- { TARGET_CBAUD, TARGET_B57600, CBAUD, B57600 },
- { TARGET_CBAUD, TARGET_B115200, CBAUD, B115200 },
- { TARGET_CBAUD, TARGET_B230400, CBAUD, B230400 },
- { TARGET_CBAUD, TARGET_B460800, CBAUD, B460800 },
+ BAUD_TRANSTBL(B0)
+ BAUD_TRANSTBL(B50)
+ BAUD_TRANSTBL(B75)
+ BAUD_TRANSTBL(B110)
+ BAUD_TRANSTBL(B134)
+ BAUD_TRANSTBL(B150)
+ BAUD_TRANSTBL(B200)
+ BAUD_TRANSTBL(B300)
+ BAUD_TRANSTBL(B600)
+ BAUD_TRANSTBL(B1200)
+ BAUD_TRANSTBL(B1800)
+ BAUD_TRANSTBL(B2400)
+ BAUD_TRANSTBL(B4800)
+ BAUD_TRANSTBL(B9600)
+ BAUD_TRANSTBL(B19200)
+ BAUD_TRANSTBL(B38400)
+ BAUD_TRANSTBL(B57600)
+ BAUD_TRANSTBL(B115200)
+ BAUD_TRANSTBL(B230400)
+ BAUD_TRANSTBL(B460800)
+ BAUD_TRANSTBL(B500000)
+ BAUD_TRANSTBL(B576000)
+ BAUD_TRANSTBL(B921600)
+ BAUD_TRANSTBL(B1000000)
+ BAUD_TRANSTBL(B1152000)
+ BAUD_TRANSTBL(B1500000)
+ BAUD_TRANSTBL(B2000000)
+
+ BAUD_TRANSTBL(BOTHER)
+
+ /* SPARC in particular is missing these higher baud rates */
+
+#if defined(TARGET_B2500000) && defined(B2500000)
+ BAUD_TRANSTBL(B2500000)
+#endif
+
+#if defined(TARGET_B3000000) && defined(B3000000)
+ BAUD_TRANSTBL(B3000000)
+#endif
+
+#if defined(TARGET_B3500000) && defined(B3500000)
+ BAUD_TRANSTBL(B3500000)
+#endif
+
+#if defined(TARGET_B4000000) && defined(B4000000)
+ BAUD_TRANSTBL(B4000000)
+#endif
+
{ TARGET_CSIZE, TARGET_CS5, CSIZE, CS5 },
{ TARGET_CSIZE, TARGET_CS6, CSIZE, CS6 },
{ TARGET_CSIZE, TARGET_CS7, CSIZE, CS7 },
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 09/11] linux-user: fixup termios2 related things on PowerPC
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (7 preceding siblings ...)
2026-01-24 8:53 ` [PULL v2 08/11] linux-user: Add missing termios baud rates deller
@ 2026-01-24 8:53 ` deller
2026-01-24 8:53 ` [PULL v2 10/11] linux-user: strace: Fix 5th argument of futex syscall deller
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:53 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Icenowy Zheng <uwu@icenowy.me>
The termios things on PowerPC equal to termios2 things otherwhere.
Use some simple #define's to allow both termios and termios2 to map to
termios on PowerPC.
Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Link: https://github.com/AOSC-Dev/aosc-os-abbs/blob/8d77eeaa76e9b159c3f35adaf73c875751aa7d17/app-virtualization/qemu/01-shared/patches/0005-AOSCOS-linux-user-fixup-termios2-related-things-on-P.patch
Link: https://lore.kernel.org/qemu-devel/4403eb94ddbb2934f1f75d94ce921f0f1078ad9f.camel@icenowy.me
Reviewed-by: Helge Deller <deller@gmx.de>
---
linux-user/syscall.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 9443eb3a17..64a2f1cbb2 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -148,6 +148,21 @@
#include "fd-trans.h"
#include "user/cpu_loop.h"
+#if defined(__powerpc__)
+/*
+ * On PowerPC termios2 is lacking and termios along with ioctls w/o 2
+ * behaves like termios2 and things with 2 on other architectures.
+ *
+ * Just define termios2-related things to be the same with termios-related
+ * ones to support PowerPC.
+ */
+#define host_termios2 host_termios
+#define TCGETS2 TCGETS
+#define TCSETS2 TCSETS
+#define TCSETSW2 TCSETSW
+#define TCSETSF2 TCSETSF
+#endif
+
#ifndef CLONE_IO
#define CLONE_IO 0x80000000 /* Clone io context */
#endif
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 10/11] linux-user: strace: Fix 5th argument of futex syscall
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (8 preceding siblings ...)
2026-01-24 8:53 ` [PULL v2 09/11] linux-user: fixup termios2 related things on PowerPC deller
@ 2026-01-24 8:53 ` deller
2026-01-24 8:53 ` [PULL v2 11/11] linux-user: Fix MADV_XXX constants on hppa target deller
2026-01-24 12:45 ` [PULL v2 00/11] Linux user for v11 patches Richard Henderson
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:53 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Helge Deller <deller@gmx.de>
The 5th argument isn't printed, but instead the 4th argument is shown twice.
Fix this, and print the FUTEX_BITSET_MATCH_ANY string constant instead of -1
if the op is FUTEX_WAIT_BITSET or FUTEX_WAKE_BITSET.
Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
---
linux-user/strace.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/linux-user/strace.c b/linux-user/strace.c
index 18bc6c800c..ca67cfd09d 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -4150,7 +4150,12 @@ print_futex(CPUArchState *cpu_env, const struct syscallname *name,
break;
}
print_pointer(arg4, 0);
- print_raw_param("%d", arg4, 1);
+ if ((op == FUTEX_WAIT_BITSET || (op == FUTEX_WAKE_BITSET)) &&
+ (arg5 == FUTEX_BITSET_MATCH_ANY)) {
+ qemu_log("FUTEX_BITSET_MATCH_ANY");
+ } else {
+ print_raw_param("%#x", arg5, 1);
+ }
print_syscall_epilogue(name);
}
#endif
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL v2 11/11] linux-user: Fix MADV_XXX constants on hppa target
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (9 preceding siblings ...)
2026-01-24 8:53 ` [PULL v2 10/11] linux-user: strace: Fix 5th argument of futex syscall deller
@ 2026-01-24 8:53 ` deller
2026-01-24 12:45 ` [PULL v2 00/11] Linux user for v11 patches Richard Henderson
11 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-24 8:53 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
From: Helge Deller <deller@gmx.de>
Older hppa binaries may still use the old MADV_XXX constants for the
madivise() syscall. Fix it up in the same manner as it's done in the
Linux kernel in the parisc_madvise() function.
Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
---
linux-user/syscall.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 64a2f1cbb2..3944004568 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -12922,6 +12922,22 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
#ifdef TARGET_NR_madvise
case TARGET_NR_madvise:
+#ifdef TARGET_HPPA
+ /* Emulate old hppa mapping of MADV_xxx constants. */
+ switch (arg3) {
+ case 65: arg3 = MADV_MERGEABLE; break;
+ case 66: arg3 = MADV_UNMERGEABLE; break;
+ case 67: arg3 = MADV_HUGEPAGE; break;
+ case 68: arg3 = MADV_NOHUGEPAGE; break;
+ case 69: arg3 = MADV_DONTDUMP; break;
+ case 70: arg3 = MADV_DODUMP; break;
+ case 71: arg3 = MADV_WIPEONFORK; break;
+ case 72: arg3 = MADV_KEEPONFORK; break;
+ #ifdef MADV_COLLAPSE
+ case 73: arg3 = MADV_COLLAPSE; break;
+ #endif
+ }
+#endif /* TARGET_HPPA */
return target_madvise(arg1, arg2, arg3);
#endif
#ifdef TARGET_NR_fcntl64
--
2.52.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PULL v2 00/11] Linux user for v11 patches
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
` (10 preceding siblings ...)
2026-01-24 8:53 ` [PULL v2 11/11] linux-user: Fix MADV_XXX constants on hppa target deller
@ 2026-01-24 12:45 ` Richard Henderson
11 siblings, 0 replies; 13+ messages in thread
From: Richard Henderson @ 2026-01-24 12:45 UTC (permalink / raw)
To: deller, qemu-devel
Cc: Philippe Mathieu-Daudé, Laurent Vivier, deller, Jiaxun Yang
On 1/24/26 19:52, deller@kernel.org wrote:
> From: Helge Deller<deller@gmx.de>
>
> The following changes since commit 2339d0a1cfac6ecc667e6e062a593865c1541c35:
>
> Merge tag 'hw-misc-20260120' ofhttps://github.com/philmd/qemu into staging (2026-01-21 07:39:57 +1100)
>
> are available in the Git repository at:
>
> https://github.com/hdeller/qemu-hppa.git tags/linux-user-for-v11-pull-request
>
> for you to fetch changes up to 5db961f92b38b2a0f9db50b47ef3a718962b374f:
>
> linux-user: Fix MADV_XXX constants on hppa target (2026-01-24 09:47:00 +0100)
>
> ----------------------------------------------------------------
> linux-user: statx() syscall, termios2 support and futext() syscall fixes
>
> v2:
> Fix build error in which CentOS9 is lacking the definition of MADV_COLLAPSE
Applied, thanks. Please update https://wiki.qemu.org/ChangeLog/11.0 as appropriate.
r~
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-01-24 12:48 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-24 8:52 [PULL v2 00/11] Linux user for v11 patches deller
2026-01-24 8:52 ` [PULL v2 01/11] linux-user: update statx emulation deller
2026-01-24 8:52 ` [PULL v2 02/11] linux-user: Add termios2 support deller
2026-01-24 8:52 ` [PULL v2 03/11] linux-user: Add termios2 support to alpha target deller
2026-01-24 8:52 ` [PULL v2 04/11] linux-user: Add termios2 support to hppa target deller
2026-01-24 8:53 ` [PULL v2 05/11] linux-user: Add termios2 support to mips target deller
2026-01-24 8:53 ` [PULL v2 06/11] linux-user: Add termios2 support to sh4 target deller
2026-01-24 8:53 ` [PULL v2 07/11] linux-user: Add termios2 support to sparc target deller
2026-01-24 8:53 ` [PULL v2 08/11] linux-user: Add missing termios baud rates deller
2026-01-24 8:53 ` [PULL v2 09/11] linux-user: fixup termios2 related things on PowerPC deller
2026-01-24 8:53 ` [PULL v2 10/11] linux-user: strace: Fix 5th argument of futex syscall deller
2026-01-24 8:53 ` [PULL v2 11/11] linux-user: Fix MADV_XXX constants on hppa target deller
2026-01-24 12:45 ` [PULL v2 00/11] Linux user for v11 patches Richard Henderson
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.