[RFC PATCH] tools: termios_linux.h: Fix build error on ppc64

Javier Martinez Canillas javierm at redhat.com
Fri Jun 27 15:53:37 CEST 2025


Commit 93b55636b09f ("tools: kwboot: Allow any baudrate on Linux") added a
tcgetattr() function to be used, instead of the libc's termios functions.

This was done to allow using the raw TCGETS2/TCSETS2 ioctls that allow to
support arbitrary baud rates.

This breaks the build for PowerPC, because that architecture does not have
a struct termios2 defined becuase the termios and ktermios are the same.

On PowerPC, the termios ioctl() emulates the TCGETS2/TCSETS*2 ioctls with
tcgetattr/tcsetattr using just the struct termios (that's as mentioned the
same than what is defined as struct termios2 in other architectures).

So there is no need to use the TCGETS2/TCSETS2 ioctls on that architecture
and just TCGETS/TCSETS ioctls with termios as defined by PowerPC is enough.

Fixes: 93b55636b09f ("tools: kwboot: Allow any baudrate on Linux")
Signed-off-by: Javier Martinez Canillas <javierm at redhat.com>
---
The patch fixes a build error found on Fedora rawhide with latest glibc:

https://bugzilla.redhat.com/show_bug.cgi?id=2375150

It is an RFC because I'm not familiar with this part of the code nor the
PowerPC architecture. But this patch fixes the mentioned compile issue.

 tools/termios_linux.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/termios_linux.h b/tools/termios_linux.h
index 0806a91180a0..0e5a5c475b55 100644
--- a/tools/termios_linux.h
+++ b/tools/termios_linux.h
@@ -32,13 +32,13 @@
 #include <asm/ioctls.h>
 #include <asm/termbits.h>
 
-#if defined(BOTHER) && defined(TCGETS2)
+#if defined(BOTHER) && defined(TCGETS2) && !defined(__powerpc64__)
 #define termios termios2
 #endif
 
 static inline int tcgetattr(int fd, struct termios *t)
 {
-#if defined(BOTHER) && defined(TCGETS2)
+#if defined(BOTHER) && defined(TCGETS2) && !defined(__powerpc64__)
 	return ioctl(fd, TCGETS2, t);
 #else
 	return ioctl(fd, TCGETS, t);
@@ -50,7 +50,7 @@ static inline int tcsetattr(int fd, int a, const struct termios *t)
 	int cmd;
 
 	switch (a) {
-#if defined(BOTHER) && defined(TCGETS2)
+#if defined(BOTHER) && defined(TCGETS2) && !defined(__powerpc64__)
 	case TCSANOW:
 		cmd = TCSETS2;
 		break;
-- 
2.49.0

base-commit: 903eb123236ccbd8ef05d43507a2a910b785bd56
branch: master



More information about the U-Boot mailing list