* [PULL 00/11] Linux user for v11 patches
@ 2026-01-23 20:52 deller
2026-01-23 20:52 ` [PULL 01/11] linux-user: update statx emulation deller
` (10 more replies)
0 siblings, 11 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 3829bb3f187598501051b582053bed693aced988:
linux-user: Fix MADV_XXX constants on hppa target (2026-01-23 20:40:15 +0100)
----------------------------------------------------------------
linux-user: statx() syscall, termios2 support and futext() syscall fixes
Please pull if no obvious breakages happen in the testsuite.
Thanks!
Helge
----------------------------------------------------------------
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 | 199 ++++++++++++++++++++++++++++++----
linux-user/syscall_defs.h | 6 +-
linux-user/syscall_types.h | 3 +
linux-user/user-internals.h | 3 +
13 files changed, 447 insertions(+), 43 deletions(-)
--
2.52.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PULL 01/11] linux-user: update statx emulation
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 02/11] linux-user: Add termios2 support deller
` (9 subsequent siblings)
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 02/11] linux-user: Add termios2 support
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
2026-01-23 20:52 ` [PULL 01/11] linux-user: update statx emulation deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 03/11] linux-user: Add termios2 support to alpha target deller
` (8 subsequent siblings)
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 03/11] linux-user: Add termios2 support to alpha target
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
2026-01-23 20:52 ` [PULL 01/11] linux-user: update statx emulation deller
2026-01-23 20:52 ` [PULL 02/11] linux-user: Add termios2 support deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 04/11] linux-user: Add termios2 support to hppa target deller
` (7 subsequent siblings)
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 04/11] linux-user: Add termios2 support to hppa target
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
` (2 preceding siblings ...)
2026-01-23 20:52 ` [PULL 03/11] linux-user: Add termios2 support to alpha target deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 05/11] linux-user: Add termios2 support to mips target deller
` (6 subsequent siblings)
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 05/11] linux-user: Add termios2 support to mips target
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
` (3 preceding siblings ...)
2026-01-23 20:52 ` [PULL 04/11] linux-user: Add termios2 support to hppa target deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 06/11] linux-user: Add termios2 support to sh4 target deller
` (5 subsequent siblings)
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 06/11] linux-user: Add termios2 support to sh4 target
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
` (4 preceding siblings ...)
2026-01-23 20:52 ` [PULL 05/11] linux-user: Add termios2 support to mips target deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 07/11] linux-user: Add termios2 support to sparc target deller
` (4 subsequent siblings)
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 07/11] linux-user: Add termios2 support to sparc target
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
` (5 preceding siblings ...)
2026-01-23 20:52 ` [PULL 06/11] linux-user: Add termios2 support to sh4 target deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 08/11] linux-user: Add missing termios baud rates deller
` (3 subsequent siblings)
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 08/11] linux-user: Add missing termios baud rates
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
` (6 preceding siblings ...)
2026-01-23 20:52 ` [PULL 07/11] linux-user: Add termios2 support to sparc target deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 09/11] linux-user: fixup termios2 related things on PowerPC deller
` (2 subsequent siblings)
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 09/11] linux-user: fixup termios2 related things on PowerPC
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
` (7 preceding siblings ...)
2026-01-23 20:52 ` [PULL 08/11] linux-user: Add missing termios baud rates deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 10/11] linux-user: strace: Fix 5th argument of futex syscall deller
2026-01-23 20:52 ` [PULL 11/11] linux-user: Fix MADV_XXX constants on hppa target deller
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 10/11] linux-user: strace: Fix 5th argument of futex syscall
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
` (8 preceding siblings ...)
2026-01-23 20:52 ` [PULL 09/11] linux-user: fixup termios2 related things on PowerPC deller
@ 2026-01-23 20:52 ` deller
2026-01-23 20:52 ` [PULL 11/11] linux-user: Fix MADV_XXX constants on hppa target deller
10 siblings, 0 replies; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 11/11] linux-user: Fix MADV_XXX constants on hppa target
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
` (9 preceding siblings ...)
2026-01-23 20:52 ` [PULL 10/11] linux-user: strace: Fix 5th argument of futex syscall deller
@ 2026-01-23 20:52 ` deller
2026-01-24 0:56 ` Richard Henderson
10 siblings, 1 reply; 13+ messages in thread
From: deller @ 2026-01-23 20:52 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
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 | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 64a2f1cbb2..2788c3239e 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -12922,6 +12922,20 @@ 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;
+ case 73: arg3 = MADV_COLLAPSE; break;
+ }
+#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 11/11] linux-user: Fix MADV_XXX constants on hppa target
2026-01-23 20:52 ` [PULL 11/11] linux-user: Fix MADV_XXX constants on hppa target deller
@ 2026-01-24 0:56 ` Richard Henderson
0 siblings, 0 replies; 13+ messages in thread
From: Richard Henderson @ 2026-01-24 0:56 UTC (permalink / raw)
To: deller, qemu-devel
Cc: Laurent Vivier, Jiaxun Yang, deller, Philippe Mathieu-Daudé
On 1/24/26 07:52, deller@kernel.org wrote:
> 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 | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 64a2f1cbb2..2788c3239e 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -12922,6 +12922,20 @@ 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;
> + case 73: arg3 = MADV_COLLAPSE; break;
> + }
> +#endif /* TARGET_HPPA */
Build failure:
https://gitlab.com/qemu-project/qemu/-/jobs/12848016272
> ../linux-user/syscall.c: In function ‘do_syscall1’:
> ../linux-user/syscall.c:12936:25: error: ‘MADV_COLLAPSE’ undeclared (first use in this function); did you mean ‘MADV_COLD’?
> 12936 | case 73: arg3 = MADV_COLLAPSE; break;
> | ^~~~~~~~~~~~~
> | MADV_COLD
r~
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-01-24 0:57 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-23 20:52 [PULL 00/11] Linux user for v11 patches deller
2026-01-23 20:52 ` [PULL 01/11] linux-user: update statx emulation deller
2026-01-23 20:52 ` [PULL 02/11] linux-user: Add termios2 support deller
2026-01-23 20:52 ` [PULL 03/11] linux-user: Add termios2 support to alpha target deller
2026-01-23 20:52 ` [PULL 04/11] linux-user: Add termios2 support to hppa target deller
2026-01-23 20:52 ` [PULL 05/11] linux-user: Add termios2 support to mips target deller
2026-01-23 20:52 ` [PULL 06/11] linux-user: Add termios2 support to sh4 target deller
2026-01-23 20:52 ` [PULL 07/11] linux-user: Add termios2 support to sparc target deller
2026-01-23 20:52 ` [PULL 08/11] linux-user: Add missing termios baud rates deller
2026-01-23 20:52 ` [PULL 09/11] linux-user: fixup termios2 related things on PowerPC deller
2026-01-23 20:52 ` [PULL 10/11] linux-user: strace: Fix 5th argument of futex syscall deller
2026-01-23 20:52 ` [PULL 11/11] linux-user: Fix MADV_XXX constants on hppa target deller
2026-01-24 0:56 ` 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.