All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/11] Enable kernel 5.4
@ 2020-10-26 11:04 Jan Kiszka
  2020-10-26 11:04 ` [PATCH 01/11] cobalt/kernel: adapt adjtime syscall with upstream kernel Jan Kiszka
                   ` (10 more replies)
  0 siblings, 11 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

This contains the changes needed to build and run most of Xenomai
against kernel 5.4 on x86. Other archs still need porting. Furthermore,
we still need to adjust RTnet and Analogy to some kernel changes.

Jan


CC: Fino Meng <fino.meng@linux.intel.com>

Fino Meng (2):
  cobalt/kernel: adapt adjtime syscall with upstream kernel
  cobalt/kernel: fix compile error for incompatible pointer type

Jan Kiszka (9):
  cobalt/x86: Account for FPU changes in kernel 5.2
  drivers/ipc: Account for renaming of SO_RCVTIMEO/SO_SNDTIMEO
  driver/net: Update to kernel 5.4
  wrappers: Add mmiowb stub for kernels >= 5.2
  drivers/analogy: Fix unintended fallthrough
  drivers/e1000: Fix unintended fallthrough
  cobalt/posix: Address -Wimplicit-fallthrough
  testsuite/switchtest: Fix help output
  ci: Add x86 5.4 kernel to CI

 .gitlab-ci.yml                                |  8 ++++
 include/cobalt/kernel/compat.h                |  4 +-
 include/cobalt/kernel/stat.h                  |  4 +-
 kernel/cobalt/arch/x86/thread.c               | 46 +++++++++++++++++++
 .../include/asm-generic/xenomai/wrappers.h    | 10 ++++
 kernel/cobalt/posix/compat.c                  |  6 +--
 kernel/cobalt/posix/sched.c                   |  5 +-
 kernel/cobalt/posix/signal.c                  |  2 +-
 kernel/cobalt/posix/signal.h                  |  2 +-
 kernel/cobalt/posix/syscall32.c               |  2 +-
 kernel/cobalt/posix/syscall32.h               |  2 +-
 .../analogy/national_instruments/tio_common.c |  1 +
 kernel/drivers/can/rtcan_raw_dev.c            |  2 +-
 kernel/drivers/can/sja1000/rtcan_peak_pci.c   |  5 ++
 kernel/drivers/ipc/bufp.c                     |  9 ++--
 kernel/drivers/ipc/iddp.c                     |  9 ++--
 kernel/drivers/ipc/xddp.c                     |  5 +-
 kernel/drivers/net/drivers/e1000/e1000_hw.c   |  4 +-
 kernel/drivers/net/drivers/e1000/e1000_main.c |  1 +
 kernel/drivers/net/drivers/e1000e/e1000.h     |  1 -
 kernel/drivers/net/drivers/e1000e/netdev.c    |  4 ++
 kernel/drivers/net/drivers/igb/e1000_82575.c  |  4 +-
 kernel/drivers/net/drivers/igb/e1000_phy.c    |  1 +
 kernel/drivers/net/drivers/igb/igb_main.c     |  2 +-
 kernel/drivers/net/drivers/r8169.c            |  5 +-
 kernel/drivers/net/stack/ipv4/tcp/tcp.c       |  2 +-
 kernel/drivers/net/stack/ipv4/udp/udp.c       |  1 +
 kernel/drivers/net/stack/packet/af_packet.c   |  1 +
 testsuite/switchtest/switchtest.c             |  5 ++
 29 files changed, 124 insertions(+), 29 deletions(-)

-- 
2.26.2



^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 01/11] cobalt/kernel: adapt adjtime syscall with upstream kernel
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-27  1:16   ` chensong
  2020-10-26 11:04 ` [PATCH 02/11] cobalt/kernel: fix compile error for incompatible pointer type Jan Kiszka
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Fino Meng <fino.meng@linux.intel.com>

compat_timex related definitions moved from compat code into normal timekeeping code.
see 4d5f007e in upstream Linux kernel.

Signed-off-by: Fino Meng <fino.meng@linux.intel.com>
Signed-off-by: Mingliang Hu <mingliang.hu@intel.com>
[Jan: account for older kernel versions]
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 include/cobalt/kernel/compat.h                       | 4 ++--
 kernel/cobalt/include/asm-generic/xenomai/wrappers.h | 4 ++++
 kernel/cobalt/posix/compat.c                         | 4 ++--
 kernel/cobalt/posix/syscall32.c                      | 2 +-
 kernel/cobalt/posix/syscall32.h                      | 2 +-
 5 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/include/cobalt/kernel/compat.h b/include/cobalt/kernel/compat.h
index 05754cba89..c9cb84f721 100644
--- a/include/cobalt/kernel/compat.h
+++ b/include/cobalt/kernel/compat.h
@@ -105,9 +105,9 @@ int sys32_put_timeval(struct compat_timeval __user *ctv,
 		      const struct timeval *tv);
 
 int sys32_get_timex(struct timex *tx,
-		    const struct compat_timex __user *ctx);
+		    const struct old_timex32 __user *ctx);
 
-int sys32_put_timex(struct compat_timex __user *ctx,
+int sys32_put_timex(struct old_timex32 __user *ctx,
 		    const struct timex *tx);
 
 ssize_t sys32_get_fdset(fd_set *fds, const compat_fd_set __user *cfds,
diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
index 23993dcc15..de5a992850 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
@@ -156,4 +156,8 @@ devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
 #error "Xenomai/cobalt requires Linux kernel 3.10 or above"
 #endif /* < 3.10 */
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,1,0)
+#define old_timex32		compat_timex
+#endif
+
 #endif /* _COBALT_ASM_GENERIC_WRAPPERS_H */
diff --git a/kernel/cobalt/posix/compat.c b/kernel/cobalt/posix/compat.c
index 17968bff1d..a31ec04578 100644
--- a/kernel/cobalt/posix/compat.c
+++ b/kernel/cobalt/posix/compat.c
@@ -81,7 +81,7 @@ int sys32_put_timeval(struct compat_timeval __user *ctv,
 EXPORT_SYMBOL_GPL(sys32_put_timeval);
 
 int sys32_get_timex(struct timex *tx,
-		    const struct compat_timex __user *ctx)
+		    const struct old_timex32 __user *ctx)
 {
 	memset(tx, 0, sizeof(*tx));
 
@@ -112,7 +112,7 @@ int sys32_get_timex(struct timex *tx,
 }
 EXPORT_SYMBOL_GPL(sys32_get_timex);
 
-int sys32_put_timex(struct compat_timex __user *ctx,
+int sys32_put_timex(struct old_timex32 __user *ctx,
 		    const struct timex *tx)
 {
 	if (!access_wok(ctx, sizeof(*ctx)) ||
diff --git a/kernel/cobalt/posix/syscall32.c b/kernel/cobalt/posix/syscall32.c
index faa7ef53a6..c2fd6a1e05 100644
--- a/kernel/cobalt/posix/syscall32.c
+++ b/kernel/cobalt/posix/syscall32.c
@@ -172,7 +172,7 @@ COBALT_SYSCALL32emu(clock_settime, current,
 }
 
 COBALT_SYSCALL32emu(clock_adjtime, current,
-		    (clockid_t clock_id, struct compat_timex __user *u_tx))
+		    (clockid_t clock_id, struct old_timex32 __user *u_tx))
 {
 	struct timex tx;
 	int ret;
diff --git a/kernel/cobalt/posix/syscall32.h b/kernel/cobalt/posix/syscall32.h
index 34904f96bd..eb3e4bd300 100644
--- a/kernel/cobalt/posix/syscall32.h
+++ b/kernel/cobalt/posix/syscall32.h
@@ -65,7 +65,7 @@ COBALT_SYSCALL32emu_DECL(clock_settime,
 
 COBALT_SYSCALL32emu_DECL(clock_adjtime,
 			 (clockid_t clock_id,
-			  struct compat_timex __user *u_tx));
+			  struct old_timex32 __user *u_tx));
 
 COBALT_SYSCALL32emu_DECL(clock_nanosleep,
 			 (clockid_t clock_id, int flags,
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 02/11] cobalt/kernel: fix compile error for incompatible pointer type
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
  2020-10-26 11:04 ` [PATCH 01/11] cobalt/kernel: adapt adjtime syscall with upstream kernel Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 03/11] cobalt/x86: Account for FPU changes in kernel 5.2 Jan Kiszka
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Fino Meng <fino.meng@linux.intel.com>

Signed-off-by: Fino Meng <fino.meng@linux.intel.com>
Signed-off-by: Mingliang Hu <mingliang.hu@intel.com>
[Jan: reformat]
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 include/cobalt/kernel/stat.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/cobalt/kernel/stat.h b/include/cobalt/kernel/stat.h
index b857cd19f3..d252e1429f 100644
--- a/include/cobalt/kernel/stat.h
+++ b/include/cobalt/kernel/stat.h
@@ -58,7 +58,9 @@ do { \
 #define xnstat_exectime_set_current(sched, new_account) \
 ({ \
 	xnstat_exectime_t *__prev; \
-	__prev = (xnstat_exectime_t *)atomic_long_xchg(&(sched)->current_account, (long)(new_account)); \
+	__prev = (xnstat_exectime_t *) \
+		atomic_long_xchg((atomic_long_t *)&(sched)->current_account, \
+				 (long)(new_account)); \
 	__prev; \
 })
 
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 03/11] cobalt/x86: Account for FPU changes in kernel 5.2
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
  2020-10-26 11:04 ` [PATCH 01/11] cobalt/kernel: adapt adjtime syscall with upstream kernel Jan Kiszka
  2020-10-26 11:04 ` [PATCH 02/11] cobalt/kernel: fix compile error for incompatible pointer type Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 04/11] drivers/ipc: Account for renaming of SO_RCVTIMEO/SO_SNDTIMEO Jan Kiszka
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

Since that version, the FPU is only updated when returning to userspace.
This breaks the thread switching expectations of Xenomai because there
is no update happening when returning to a thread in primary mode or
when switching in a primary-mode kernel thread.

Account for that by
 - saving the context when switching out an in-kernel Xenomai thread
 - restoring the context after switching in a Xenomai thread
 - invalidate the FPU state variables after returning to a preempted
   Linux kernel thread that uses the FPU

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/arch/x86/thread.c | 46 +++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/kernel/cobalt/arch/x86/thread.c b/kernel/cobalt/arch/x86/thread.c
index ba807ac1ed..1ed6acb46b 100644
--- a/kernel/cobalt/arch/x86/thread.c
+++ b/kernel/cobalt/arch/x86/thread.c
@@ -215,6 +215,21 @@ void xnarch_switch_to(struct xnthread *out, struct xnthread *in)
 		 */
 		clts();
 #endif /* ! IPIPE_X86_FPU_EAGER */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
+	if (!xnthread_test_state(out, XNROOT | XNUSER) &&
+	    !test_thread_flag(TIF_NEED_FPU_LOAD)) {
+		/*
+		 * This compensates that switch_fpu_prepare ignores kernel
+		 * threads.
+		 */
+		struct fpu *prev_fpu = &prev->thread.fpu;
+
+		if (!copy_fpregs_to_fpstate(prev_fpu))
+			prev_fpu->last_cpu = -1;
+		else
+			prev_fpu->last_cpu = smp_processor_id();
+	}
+#endif
 
 	next = in_tcb->core.host_task;
 #ifndef IPIPE_X86_FPU_EAGER
@@ -260,6 +275,29 @@ void xnarch_switch_to(struct xnthread *out, struct xnthread *in)
 #ifndef IPIPE_X86_FPU_EAGER
 	stts();
 #endif /* ! IPIPE_X86_FPU_EAGER */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
+	/* 
+	 * Refresh 'in', we switch the stacks. However, there might be no
+	 * current thread at this point.
+	 */
+	in = xnthread_current();
+	if (in && !xnthread_test_state(in, XNROOT) &&
+	    test_thread_flag(TIF_NEED_FPU_LOAD)) {
+		/*
+		 * This is open-coded switch_fpu_return but without a test for
+		 * PF_KTHREAD, i.e including kernel threads.
+		 */
+		struct fpu *fpu = &current->thread.fpu;
+		int cpu = smp_processor_id();
+
+		if (!fpregs_state_valid(fpu, cpu)) {
+			copy_kernel_to_fpregs(&fpu->state);
+			fpregs_activate(fpu);
+			fpu->last_cpu = cpu;
+		}
+		clear_thread_flag(TIF_NEED_FPU_LOAD);
+	}
+#endif
 }
 
 #ifndef IPIPE_X86_FPU_EAGER
@@ -472,7 +510,11 @@ void xnarch_leave_root(struct xnthread *root)
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)
 	/* restore current's fpregs */
 	__cpu_invalidate_fpregs_state();
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
+	switch_fpu_finish(&current->thread.fpu);
+#else
 	switch_fpu_finish(&current->thread.fpu, smp_processor_id());
+#endif
 #else
 	/* mark current thread as not owning the FPU anymore */
 	if (fpregs_active())
@@ -488,6 +530,10 @@ void xnarch_switch_fpu(struct xnthread *from, struct xnthread *to)
 		return;
 
 	copy_kernel_to_fpregs(&to_tcb->kfpu->state);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
+	/* redo the invalidation done by kernel_fpu_begin */
+	__cpu_invalidate_fpregs_state();
+#endif
 	kernel_fpu_disable();
 }
 #endif /* ! IPIPE_X86_FPU_EAGER */
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 04/11] drivers/ipc: Account for renaming of SO_RCVTIMEO/SO_SNDTIMEO
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
                   ` (2 preceding siblings ...)
  2020-10-26 11:04 ` [PATCH 03/11] cobalt/x86: Account for FPU changes in kernel 5.2 Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 05/11] driver/net: Update to kernel 5.4 Jan Kiszka
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

Use the *_OLD defines for the 2038-wise unconverted socket options.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/include/asm-generic/xenomai/wrappers.h | 2 ++
 kernel/drivers/ipc/bufp.c                            | 8 ++++----
 kernel/drivers/ipc/iddp.c                            | 8 ++++----
 kernel/drivers/ipc/xddp.c                            | 4 ++--
 4 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
index de5a992850..b910138395 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
@@ -158,6 +158,8 @@ devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(5,1,0)
 #define old_timex32		compat_timex
+#define SO_RCVTIMEO_OLD		SO_RCVTIMEO
+#define SO_SNDTIMEO_OLD		SO_SNDTIMEO
 #endif
 
 #endif /* _COBALT_ASM_GENERIC_WRAPPERS_H */
diff --git a/kernel/drivers/ipc/bufp.c b/kernel/drivers/ipc/bufp.c
index 45c917eb07..9410973f2c 100644
--- a/kernel/drivers/ipc/bufp.c
+++ b/kernel/drivers/ipc/bufp.c
@@ -830,14 +830,14 @@ static int __bufp_setsockopt(struct bufp_socket *sk,
 	if (sopt.level == SOL_SOCKET) {
 		switch (sopt.optname) {
 
-		case SO_RCVTIMEO:
+		case SO_RCVTIMEO_OLD:
 			ret = rtipc_get_timeval(fd, &tv, sopt.optval, sopt.optlen);
 			if (ret)
 				return ret;
 			sk->rx_timeout = rtipc_timeval_to_ns(&tv);
 			break;
 
-		case SO_SNDTIMEO:
+		case SO_SNDTIMEO_OLD:
 			ret = rtipc_get_timeval(fd, &tv, sopt.optval, sopt.optlen);
 			if (ret)
 				return ret;
@@ -922,14 +922,14 @@ static int __bufp_getsockopt(struct bufp_socket *sk,
 	if (sopt.level == SOL_SOCKET) {
 		switch (sopt.optname) {
 
-		case SO_RCVTIMEO:
+		case SO_RCVTIMEO_OLD:
 			rtipc_ns_to_timeval(&tv, sk->rx_timeout);
 			ret = rtipc_put_timeval(fd, sopt.optval, &tv, len);
 			if (ret)
 				return ret;
 			break;
 
-		case SO_SNDTIMEO:
+		case SO_SNDTIMEO_OLD:
 			rtipc_ns_to_timeval(&tv, sk->tx_timeout);
 			ret = rtipc_put_timeval(fd, sopt.optval, &tv, len);
 			if (ret)
diff --git a/kernel/drivers/ipc/iddp.c b/kernel/drivers/ipc/iddp.c
index 2a80eba65a..5bb2b85337 100644
--- a/kernel/drivers/ipc/iddp.c
+++ b/kernel/drivers/ipc/iddp.c
@@ -712,14 +712,14 @@ static int __iddp_setsockopt(struct iddp_socket *sk,
 	if (sopt.level == SOL_SOCKET) {
 		switch (sopt.optname) {
 
-		case SO_RCVTIMEO:
+		case SO_RCVTIMEO_OLD:
 			ret = rtipc_get_timeval(fd, &tv, sopt.optval, sopt.optlen);
 			if (ret)
 				return ret;
 			sk->rx_timeout = rtipc_timeval_to_ns(&tv);
 			break;
 
-		case SO_SNDTIMEO:
+		case SO_SNDTIMEO_OLD:
 			ret = rtipc_get_timeval(fd, &tv, sopt.optval, sopt.optlen);
 			if (ret)
 				return ret;
@@ -805,14 +805,14 @@ static int __iddp_getsockopt(struct iddp_socket *sk,
 	if (sopt.level == SOL_SOCKET) {
 		switch (sopt.optname) {
 
-		case SO_RCVTIMEO:
+		case SO_RCVTIMEO_OLD:
 			rtipc_ns_to_timeval(&tv, sk->rx_timeout);
 			ret = rtipc_put_timeval(fd, sopt.optval, &tv, len);
 			if (ret)
 				return ret;
 			break;
 
-		case SO_SNDTIMEO:
+		case SO_SNDTIMEO_OLD:
 			rtipc_ns_to_timeval(&tv, sk->tx_timeout);
 			ret = rtipc_put_timeval(fd, sopt.optval, &tv, len);
 			if (ret)
diff --git a/kernel/drivers/ipc/xddp.c b/kernel/drivers/ipc/xddp.c
index 57275d0c60..2bf26fcaa8 100644
--- a/kernel/drivers/ipc/xddp.c
+++ b/kernel/drivers/ipc/xddp.c
@@ -867,7 +867,7 @@ static int __xddp_setsockopt(struct xddp_socket *sk,
 	if (sopt.level == SOL_SOCKET) {
 		switch (sopt.optname) {
 
-		case SO_RCVTIMEO:
+		case SO_RCVTIMEO_OLD:
 			ret = rtipc_get_timeval(fd, &tv, sopt.optval, sopt.optlen);
 			if (ret)
 				return ret;
@@ -976,7 +976,7 @@ static int __xddp_getsockopt(struct xddp_socket *sk,
 	if (sopt.level == SOL_SOCKET) {
 		switch (sopt.optname) {
 
-		case SO_RCVTIMEO:
+		case SO_RCVTIMEO_OLD:
 			rtipc_ns_to_timeval(&tv, sk->timeout);
 			ret = rtipc_put_timeval(fd, sopt.optval, &tv, len);
 			if (ret)
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 05/11] driver/net: Update to kernel 5.4
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
                   ` (3 preceding siblings ...)
  2020-10-26 11:04 ` [PATCH 04/11] drivers/ipc: Account for renaming of SO_RCVTIMEO/SO_SNDTIMEO Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 06/11] wrappers: Add mmiowb stub for kernels >= 5.2 Jan Kiszka
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

linux/pci-aspm.h has been folded into linux/pci.h in that version.
Account for that in drivers that actually need it.

Furthermore, our implementation of SO_SNDTIMEO is now SO_SNDTIMEO_OLD
until 2038 has been addressed.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/net/drivers/e1000e/e1000.h  | 1 -
 kernel/drivers/net/drivers/e1000e/netdev.c | 4 ++++
 kernel/drivers/net/drivers/igb/igb_main.c  | 1 -
 kernel/drivers/net/drivers/r8169.c         | 5 ++++-
 kernel/drivers/net/stack/ipv4/tcp/tcp.c    | 2 +-
 5 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/kernel/drivers/net/drivers/e1000e/e1000.h b/kernel/drivers/net/drivers/e1000e/e1000.h
index 2de681422f..7454c6350a 100644
--- a/kernel/drivers/net/drivers/e1000e/e1000.h
+++ b/kernel/drivers/net/drivers/e1000e/e1000.h
@@ -38,7 +38,6 @@
 #include <linux/io.h>
 #include <linux/netdevice.h>
 #include <linux/pci.h>
-#include <linux/pci-aspm.h>
 #include <linux/crc32.h>
 #include <linux/if_vlan.h>
 
diff --git a/kernel/drivers/net/drivers/e1000e/netdev.c b/kernel/drivers/net/drivers/e1000e/netdev.c
index baeb6aa09d..5beaf2b552 100644
--- a/kernel/drivers/net/drivers/e1000e/netdev.c
+++ b/kernel/drivers/net/drivers/e1000e/netdev.c
@@ -53,6 +53,10 @@
 #include <linux/aer.h>
 #include <linux/prefetch.h>
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0)
+#include <linux/pci-aspm.h>
+#endif
+
 #include "e1000.h"
 
 #define RT_E1000E_NUM_RXD	64
diff --git a/kernel/drivers/net/drivers/igb/igb_main.c b/kernel/drivers/net/drivers/igb/igb_main.c
index 2c9d51e7f2..37d891a620 100644
--- a/kernel/drivers/net/drivers/igb/igb_main.c
+++ b/kernel/drivers/net/drivers/igb/igb_main.c
@@ -42,7 +42,6 @@
 #include <linux/if.h>
 #include <linux/if_vlan.h>
 #include <linux/pci.h>
-#include <linux/pci-aspm.h>
 #include <linux/delay.h>
 #include <linux/interrupt.h>
 #include <linux/ip.h>
diff --git a/kernel/drivers/net/drivers/r8169.c b/kernel/drivers/net/drivers/r8169.c
index 619ecc0434..6255fcb3f2 100644
--- a/kernel/drivers/net/drivers/r8169.c
+++ b/kernel/drivers/net/drivers/r8169.c
@@ -69,7 +69,6 @@ RTL8169_VERSION "2.2"	<2004/08/09>
  */
 
 #include <linux/module.h>
-#include <linux/pci-aspm.h>
 #include <linux/pci.h>
 #include <linux/netdevice.h>
 #include <linux/etherdevice.h>
@@ -79,6 +78,10 @@ RTL8169_VERSION "2.2"	<2004/08/09>
 #include <linux/timer.h>
 #include <linux/init.h>
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,4,0)
+#include <linux/pci-aspm.h>
+#endif
+
 #include <rtnet_port.h>	/*** RTnet ***/
 
 #define RTL8169_VERSION "2.2-04"
diff --git a/kernel/drivers/net/stack/ipv4/tcp/tcp.c b/kernel/drivers/net/stack/ipv4/tcp/tcp.c
index b8263e5d23..8fef3ae5b5 100644
--- a/kernel/drivers/net/stack/ipv4/tcp/tcp.c
+++ b/kernel/drivers/net/stack/ipv4/tcp/tcp.c
@@ -1762,7 +1762,7 @@ static int rt_tcp_setsockopt(struct rtdm_fd *fd, struct tcp_socket *ts,
 	    */
 		return 0;
 
-	case SO_SNDTIMEO:
+	case SO_SNDTIMEO_OLD:
 		if (optlen < sizeof(tv))
 			return -EINVAL;
 		if (rtdm_copy_from_user(fd, &tv, optval, sizeof(tv)))
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 06/11] wrappers: Add mmiowb stub for kernels >= 5.2
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
                   ` (4 preceding siblings ...)
  2020-10-26 11:04 ` [PATCH 05/11] driver/net: Update to kernel 5.4 Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 07/11] drivers/analogy: Fix unintended fallthrough Jan Kiszka
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

This was folded into spin_unlock, thus obsoleted. Keep it for older
kernels.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/include/asm-generic/xenomai/wrappers.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
index b910138395..e266d5acf8 100644
--- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
+++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
@@ -162,4 +162,8 @@ devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
 #define SO_SNDTIMEO_OLD		SO_SNDTIMEO
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,2,0)
+#define mmiowb()		do { } while (0)
+#endif
+
 #endif /* _COBALT_ASM_GENERIC_WRAPPERS_H */
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 07/11] drivers/analogy: Fix unintended fallthrough
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
                   ` (5 preceding siblings ...)
  2020-10-26 11:04 ` [PATCH 06/11] wrappers: Add mmiowb stub for kernels >= 5.2 Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 08/11] drivers/e1000: " Jan Kiszka
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

Apparently not desired but likely harmless.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/analogy/national_instruments/tio_common.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/drivers/analogy/national_instruments/tio_common.c b/kernel/drivers/analogy/national_instruments/tio_common.c
index feb6f41ca6..bcce728eb5 100644
--- a/kernel/drivers/analogy/national_instruments/tio_common.c
+++ b/kernel/drivers/analogy/national_instruments/tio_common.c
@@ -1666,6 +1666,7 @@ static int ni_tio_input_cmd(struct ni_gpct *counter, struct a4l_cmd_desc *cmd)
 	case TRIG_EXT:
 		a4l_mite_dma_arm(counter->mite_chan);
 		retval = ni_tio_arm(counter, 1, cmd->start_arg);
+		break;
 	case TRIG_OTHER:
 		a4l_mite_dma_arm(counter->mite_chan);
 		break;
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 08/11] drivers/e1000: Fix unintended fallthrough
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
                   ` (6 preceding siblings ...)
  2020-10-26 11:04 ` [PATCH 07/11] drivers/analogy: Fix unintended fallthrough Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 09/11] cobalt/posix: Address -Wimplicit-fallthrough Jan Kiszka
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

Not desired here according ancient git logs.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/drivers/net/drivers/e1000/e1000_main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/drivers/net/drivers/e1000/e1000_main.c b/kernel/drivers/net/drivers/e1000/e1000_main.c
index 329c69c7b8..3df35e033c 100644
--- a/kernel/drivers/net/drivers/e1000/e1000_main.c
+++ b/kernel/drivers/net/drivers/e1000/e1000_main.c
@@ -396,6 +396,7 @@ e1000_release_hw_control(struct e1000_adapter *adapter)
 		swsm = E1000_READ_REG(&adapter->hw, SWSM);
 		E1000_WRITE_REG(&adapter->hw, SWSM,
 				swsm & ~E1000_SWSM_DRV_LOAD);
+		break;
 	case e1000_ich8lan:
 		extcnf = E1000_READ_REG(&adapter->hw, CTRL_EXT);
 		E1000_WRITE_REG(&adapter->hw, CTRL_EXT,
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 09/11] cobalt/posix: Address -Wimplicit-fallthrough
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
                   ` (7 preceding siblings ...)
  2020-10-26 11:04 ` [PATCH 08/11] drivers/e1000: " Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 10/11] testsuite/switchtest: Fix help output Jan Kiszka
  2020-10-26 11:04 ` [PATCH 11/11] ci: Add x86 5.4 kernel to CI Jan Kiszka
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

A compatible keyword is "fallthrough", use that and add it one missing
spot in cobalt_sched_policy_param. Doesn't make all gcc versions happy
yet, but that's a compiler issue. At least gcc-9 is fine.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 kernel/cobalt/posix/compat.c                 | 2 +-
 kernel/cobalt/posix/sched.c                  | 5 +++--
 kernel/cobalt/posix/signal.c                 | 2 +-
 kernel/cobalt/posix/signal.h                 | 2 +-
 kernel/drivers/can/rtcan_raw_dev.c           | 2 +-
 kernel/drivers/can/sja1000/rtcan_peak_pci.c  | 5 +++++
 kernel/drivers/ipc/bufp.c                    | 1 +
 kernel/drivers/ipc/iddp.c                    | 1 +
 kernel/drivers/ipc/xddp.c                    | 1 +
 kernel/drivers/net/drivers/e1000/e1000_hw.c  | 4 +++-
 kernel/drivers/net/drivers/igb/e1000_82575.c | 4 +++-
 kernel/drivers/net/drivers/igb/e1000_phy.c   | 1 +
 kernel/drivers/net/drivers/igb/igb_main.c    | 1 +
 kernel/drivers/net/stack/ipv4/udp/udp.c      | 1 +
 kernel/drivers/net/stack/packet/af_packet.c  | 1 +
 15 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/kernel/cobalt/posix/compat.c b/kernel/cobalt/posix/compat.c
index a31ec04578..e53e72e0cd 100644
--- a/kernel/cobalt/posix/compat.c
+++ b/kernel/cobalt/posix/compat.c
@@ -392,7 +392,7 @@ int sys32_put_siginfo(void __user *u_si, const struct siginfo *si,
 	case SI_QUEUE:
 	case SI_MESGQ:
 		ret |= __xn_put_user(ptr_to_compat(si->si_ptr), &u_p->si_ptr);
-		/* falldown wanted. */
+		/* fallthrough */
 	case SI_USER:
 		ret |= __xn_put_user(si->si_pid, &u_p->si_pid);
 		ret |= __xn_put_user(si->si_uid, &u_p->si_uid);
diff --git a/kernel/cobalt/posix/sched.c b/kernel/cobalt/posix/sched.c
index 7e457a9a8c..798a172d7f 100644
--- a/kernel/cobalt/posix/sched.c
+++ b/kernel/cobalt/posix/sched.c
@@ -58,6 +58,7 @@ cobalt_sched_policy_param(union xnsched_policy_param *param,
 		 * levels. Otherwise, SCHED_NORMAL is scheduled by
 		 * xnsched_class_rt at priority level #0.
 		 */
+		/* fallthrough */
 	case SCHED_WEAK:
 #ifdef CONFIG_XENO_OPT_SCHED_WEAK
 		if (prio < XNSCHED_WEAK_MIN_PRIO ||
@@ -75,7 +76,7 @@ cobalt_sched_policy_param(union xnsched_policy_param *param,
 		tslice = ts2ns(&param_ex->sched_rr_quantum);
 		if (tslice == XN_INFINITE && tslice_r)
 			tslice = *tslice_r;
-		/* falldown wanted */
+		/* fallthrough */
 	case SCHED_FIFO:
 		if (prio < XNSCHED_FIFO_MIN_PRIO ||
 		    prio > XNSCHED_FIFO_MAX_PRIO)
@@ -248,7 +249,7 @@ int set_tp_config(int cpu, union sched_config *config, size_t len)
 	case sched_tp_install:
 		if (config->tp.nr_windows > 0)
 			break;
-		/* Fallback wanted. */
+		/* fallthrough */
 	case sched_tp_uninstall:
 		gps = NULL;
 		goto set_schedule;
diff --git a/kernel/cobalt/posix/signal.c b/kernel/cobalt/posix/signal.c
index e75ce2b693..75514d84fd 100644
--- a/kernel/cobalt/posix/signal.c
+++ b/kernel/cobalt/posix/signal.c
@@ -234,7 +234,7 @@ static int signal_put_siginfo(void __user *u_si, const struct siginfo *si,
 	case SI_QUEUE:
 	case SI_MESGQ:
 		ret |= __xn_put_user(si->si_ptr, &u_p->si_ptr);
-		/* falldown wanted. */
+		/* fallthrough */
 	case SI_USER:
 		ret |= __xn_put_user(si->si_pid, &u_p->si_pid);
 		ret |= __xn_put_user(si->si_uid, &u_p->si_uid);
diff --git a/kernel/cobalt/posix/signal.h b/kernel/cobalt/posix/signal.h
index a4edc094f8..e506842e71 100644
--- a/kernel/cobalt/posix/signal.h
+++ b/kernel/cobalt/posix/signal.h
@@ -49,7 +49,7 @@ void cobalt_copy_siginfo(int code,
 	case SI_QUEUE:
 	case SI_MESGQ:
 		dst->si_value = src->si_value;
-		/* falldown wanted. */
+		/* fallthrough */
 	case SI_USER:
 		dst->si_pid = src->si_pid;
 		dst->si_uid = src->si_uid;
diff --git a/kernel/drivers/can/rtcan_raw_dev.c b/kernel/drivers/can/rtcan_raw_dev.c
index 0f4f52fa28..c72c3ced51 100644
--- a/kernel/drivers/can/rtcan_raw_dev.c
+++ b/kernel/drivers/can/rtcan_raw_dev.c
@@ -374,7 +374,7 @@ int rtcan_raw_ioctl_dev(struct rtdm_fd *fd, int request, void *arg)
     case SIOCGCANBAUDRATE:
     case SIOCGCANCUSTOMBITTIME:
 	    get = 1;
-	    /* Falldown wanted. */
+	    /* fallthrough */
     case SIOCSCANMODE:
     case SIOCSCANCTRLMODE:
     case SIOCSCANBAUDRATE:
diff --git a/kernel/drivers/can/sja1000/rtcan_peak_pci.c b/kernel/drivers/can/sja1000/rtcan_peak_pci.c
index 50f573ee6d..bc6439b8fe 100644
--- a/kernel/drivers/can/sja1000/rtcan_peak_pci.c
+++ b/kernel/drivers/can/sja1000/rtcan_peak_pci.c
@@ -142,6 +142,7 @@ static void rtcan_peak_pci_del_chan(struct rtcan_device *dev,
 	printk("Removing %s %s device %s\n",
 	       peak_pci_board_name, dev->ctrl_name, dev->name);
 	rtcan_sja1000_unregister(dev);
+	/* fallthrough */
     case 5:
 	pita_icr_high = readw(board->conf_addr + PITA_ICR + 2);
 	if (board->channel == CHANNEL_SLAVE) {
@@ -150,13 +151,17 @@ static void rtcan_peak_pci_del_chan(struct rtcan_device *dev,
 	    pita_icr_high &= ~0x0002;
 	}
 	writew(pita_icr_high, board->conf_addr + PITA_ICR + 2);
+	/* fallthrough */
     case 4:
 	iounmap((void *)board->base_addr);
+	/* fallthrough */
     case 3:
 	if (board->channel != CHANNEL_SLAVE)
 	    iounmap((void *)board->conf_addr);
+	/* fallthrough */
     case 2:
 	rtcan_dev_free(dev);
+	/* fallthrough */
     case 1:
 	break;
     }
diff --git a/kernel/drivers/ipc/bufp.c b/kernel/drivers/ipc/bufp.c
index 9410973f2c..d45480f94d 100644
--- a/kernel/drivers/ipc/bufp.c
+++ b/kernel/drivers/ipc/bufp.c
@@ -1032,6 +1032,7 @@ static int bufp_ioctl(struct rtdm_fd *fd,
 	COMPAT_CASE(_RTIOC_BIND):
 		if (rtdm_in_rt_context())
 			return -ENOSYS;	/* Try downgrading to NRT */
+		/* fallthrough */
 	default:
 		ret = __bufp_ioctl(fd, request, arg);
 	}
diff --git a/kernel/drivers/ipc/iddp.c b/kernel/drivers/ipc/iddp.c
index 5bb2b85337..f31b9bb661 100644
--- a/kernel/drivers/ipc/iddp.c
+++ b/kernel/drivers/ipc/iddp.c
@@ -915,6 +915,7 @@ static int iddp_ioctl(struct rtdm_fd *fd,
 	COMPAT_CASE(_RTIOC_BIND):
 		if (rtdm_in_rt_context())
 			return -ENOSYS;	/* Try downgrading to NRT */
+		/* fallthrough */
 	default:
 		ret = __iddp_ioctl(fd, request, arg);
 	}
diff --git a/kernel/drivers/ipc/xddp.c b/kernel/drivers/ipc/xddp.c
index 2bf26fcaa8..c9236a229a 100644
--- a/kernel/drivers/ipc/xddp.c
+++ b/kernel/drivers/ipc/xddp.c
@@ -1078,6 +1078,7 @@ static int xddp_ioctl(struct rtdm_fd *fd,
 	COMPAT_CASE(_RTIOC_BIND):
 		if (rtdm_in_rt_context())
 			return -ENOSYS;	/* Try downgrading to NRT */
+		/* fallthrough */
 	default:
 		ret = __xddp_ioctl(fd, request, arg);
 	}
diff --git a/kernel/drivers/net/drivers/e1000/e1000_hw.c b/kernel/drivers/net/drivers/e1000/e1000_hw.c
index d97465336c..9c57215373 100644
--- a/kernel/drivers/net/drivers/e1000/e1000_hw.c
+++ b/kernel/drivers/net/drivers/e1000/e1000_hw.c
@@ -126,6 +126,7 @@ e1000_set_phy_type(struct e1000_hw *hw)
             hw->phy_type = e1000_phy_igp;
             break;
         }
+        /* fallthrough */
     case IGP03E1000_E_PHY_ID:
         hw->phy_type = e1000_phy_igp_3;
         break;
@@ -139,7 +140,7 @@ e1000_set_phy_type(struct e1000_hw *hw)
             hw->phy_type = e1000_phy_gg82563;
             break;
         }
-        /* Fall Through */
+        /* fallthrough */
     default:
         /* Should never have loaded on this device */
         hw->phy_type = e1000_phy_undefined;
@@ -5869,6 +5870,7 @@ e1000_rar_set(struct e1000_hw *hw,
     case e1000_80003es2lan:
         if (hw->leave_av_bit_off == TRUE)
             break;
+        /* fallthrough */
     default:
         /* Indicate to hardware the Address is Valid. */
         rar_high |= E1000_RAH_AV;
diff --git a/kernel/drivers/net/drivers/igb/e1000_82575.c b/kernel/drivers/net/drivers/igb/e1000_82575.c
index 3b3c01b47f..45bd52a9e2 100644
--- a/kernel/drivers/net/drivers/igb/e1000_82575.c
+++ b/kernel/drivers/net/drivers/igb/e1000_82575.c
@@ -607,7 +607,8 @@ static s32 igb_get_invariants_82575(struct e1000_hw *hw)
 			dev_spec->sgmii_active = true;
 			break;
 		}
-		/* fall through for I2C based SGMII */
+		/* for I2C based SGMII: */
+		/* fallthrough */
 	case E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES:
 		/* read media type from SFP EEPROM */
 		ret_val = igb_set_sfp_media_type_82575(hw);
@@ -1669,6 +1670,7 @@ static s32 igb_setup_serdes_link_82575(struct e1000_hw *hw)
 	case E1000_CTRL_EXT_LINK_MODE_1000BASE_KX:
 		/* disable PCS autoneg and support parallel detect only */
 		pcs_autoneg = false;
+		/* fallthrough */
 	default:
 		if (hw->mac.type == e1000_82575 ||
 		    hw->mac.type == e1000_82576) {
diff --git a/kernel/drivers/net/drivers/igb/e1000_phy.c b/kernel/drivers/net/drivers/igb/e1000_phy.c
index 4b0c432797..41f3afcd50 100644
--- a/kernel/drivers/net/drivers/igb/e1000_phy.c
+++ b/kernel/drivers/net/drivers/igb/e1000_phy.c
@@ -682,6 +682,7 @@ s32 igb_copper_link_setup_m88_gen2(struct e1000_hw *hw)
 			phy_data |= M88E1000_PSCR_AUTO_X_1000T;
 			break;
 		}
+		/* fallthrough */
 	case 0:
 	default:
 		phy_data |= M88E1000_PSCR_AUTO_X_MODE;
diff --git a/kernel/drivers/net/drivers/igb/igb_main.c b/kernel/drivers/net/drivers/igb/igb_main.c
index 37d891a620..01960a6c26 100644
--- a/kernel/drivers/net/drivers/igb/igb_main.c
+++ b/kernel/drivers/net/drivers/igb/igb_main.c
@@ -3550,6 +3550,7 @@ bool igb_has_link(struct igb_adapter *adapter)
 	case e1000_media_type_copper:
 		if (!hw->mac.get_link_status)
 			return true;
+		/* fallthrough */
 	case e1000_media_type_internal_serdes:
 		hw->mac.ops.check_for_link(hw);
 		link_active = !hw->mac.get_link_status;
diff --git a/kernel/drivers/net/stack/ipv4/udp/udp.c b/kernel/drivers/net/stack/ipv4/udp/udp.c
index c26b4bd813..407354f4bf 100644
--- a/kernel/drivers/net/stack/ipv4/udp/udp.c
+++ b/kernel/drivers/net/stack/ipv4/udp/udp.c
@@ -427,6 +427,7 @@ ssize_t rt_udp_recvmsg(struct rtdm_fd *fd, struct user_msghdr *u_msg,
 		switch (ret) {
 		default:
 			ret = -EBADF; /* socket has been closed */
+			/* fallthrough */
 		case -EWOULDBLOCK:
 		case -ETIMEDOUT:
 		case -EINTR:
diff --git a/kernel/drivers/net/stack/packet/af_packet.c b/kernel/drivers/net/stack/packet/af_packet.c
index b8de8a0b6a..961b3e4019 100644
--- a/kernel/drivers/net/stack/packet/af_packet.c
+++ b/kernel/drivers/net/stack/packet/af_packet.c
@@ -331,6 +331,7 @@ static ssize_t rt_packet_recvmsg(struct rtdm_fd *fd, struct user_msghdr *u_msg,
 		switch (ret) {
 		default:
 			ret = -EBADF; /* socket has been closed */
+			/* fallthrough */
 		case -EWOULDBLOCK:
 		case -ETIMEDOUT:
 		case -EINTR:
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 10/11] testsuite/switchtest: Fix help output
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
                   ` (8 preceding siblings ...)
  2020-10-26 11:04 ` [PATCH 09/11] cobalt/posix: Address -Wimplicit-fallthrough Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  2020-10-26 11:04 ` [PATCH 11/11] ci: Add x86 5.4 kernel to CI Jan Kiszka
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

As the Xenomai libs hook into the option parser and hijack --help, we
need to provide application_usage() in order to get the full help
printed.

Needs eventually a better fix, i.e. the removal of the implicit parser
hook.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 testsuite/switchtest/switchtest.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/testsuite/switchtest/switchtest.c b/testsuite/switchtest/switchtest.c
index 015bde653a..f2a5c1601a 100644
--- a/testsuite/switchtest/switchtest.c
+++ b/testsuite/switchtest/switchtest.c
@@ -1062,6 +1062,11 @@ static void usage(FILE *fd, const char *progname)
 	fprintf(fd, "\n\n");
 }
 
+void application_usage(void)
+{
+	usage(stdout, get_program_name());
+}
+
 static sigjmp_buf jump;
 
 static void illegal_instruction(int sig)
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 11/11] ci: Add x86 5.4 kernel to CI
  2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
                   ` (9 preceding siblings ...)
  2020-10-26 11:04 ` [PATCH 10/11] testsuite/switchtest: Fix help output Jan Kiszka
@ 2020-10-26 11:04 ` Jan Kiszka
  10 siblings, 0 replies; 13+ messages in thread
From: Jan Kiszka @ 2020-10-26 11:04 UTC (permalink / raw)
  To: xenomai; +Cc: Fino Meng, Mingliang Hu

From: Jan Kiszka <jan.kiszka@siemens.com>

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 .gitlab-ci.yml | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d76c9e25e6..87532a3376 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -205,6 +205,14 @@ arm64-4.14-release:
     IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-arm64.git
     KERNEL_DEFCONFIG: defconfig
 
+x86-5.4-head:
+  extends: .build
+  variables:
+    ARCH: x86
+    IPIPE_REV: ipipe-x86-5.4.y
+    IPIPE_KERNEL: ${IPIPE_MIRROR_URL}/ipipe-x86.git
+    KERNEL_DEFCONFIG: x86_64_defconfig
+
 x86-4.19-cip-head:
   extends: .build
   variables:
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 01/11] cobalt/kernel: adapt adjtime syscall with upstream kernel
  2020-10-26 11:04 ` [PATCH 01/11] cobalt/kernel: adapt adjtime syscall with upstream kernel Jan Kiszka
@ 2020-10-27  1:16   ` chensong
  0 siblings, 0 replies; 13+ messages in thread
From: chensong @ 2020-10-27  1:16 UTC (permalink / raw)
  To: Jan Kiszka, xenomai; +Cc: Mingliang Hu



On 2020年10月26日 19:04, Jan Kiszka via Xenomai wrote:
> From: Fino Meng <fino.meng@linux.intel.com>
>
> compat_timex related definitions moved from compat code into normal timekeeping code.
> see 4d5f007e in upstream Linux kernel.
>
> Signed-off-by: Fino Meng <fino.meng@linux.intel.com>
> Signed-off-by: Mingliang Hu <mingliang.hu@intel.com>
> [Jan: account for older kernel versions]
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
>   include/cobalt/kernel/compat.h                       | 4 ++--
>   kernel/cobalt/include/asm-generic/xenomai/wrappers.h | 4 ++++
>   kernel/cobalt/posix/compat.c                         | 4 ++--
>   kernel/cobalt/posix/syscall32.c                      | 2 +-
>   kernel/cobalt/posix/syscall32.h                      | 2 +-
>   5 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/include/cobalt/kernel/compat.h b/include/cobalt/kernel/compat.h
> index 05754cba89..c9cb84f721 100644
> --- a/include/cobalt/kernel/compat.h
> +++ b/include/cobalt/kernel/compat.h
> @@ -105,9 +105,9 @@ int sys32_put_timeval(struct compat_timeval __user *ctv,
>   		      const struct timeval *tv);
>
>   int sys32_get_timex(struct timex *tx,
> -		    const struct compat_timex __user *ctx);
> +		    const struct old_timex32 __user *ctx);
>
> -int sys32_put_timex(struct compat_timex __user *ctx,
> +int sys32_put_timex(struct old_timex32 __user *ctx,
>   		    const struct timex *tx);
>
>   ssize_t sys32_get_fdset(fd_set *fds, const compat_fd_set __user *cfds,
> diff --git a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
> index 23993dcc15..de5a992850 100644
> --- a/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
> +++ b/kernel/cobalt/include/asm-generic/xenomai/wrappers.h
> @@ -156,4 +156,8 @@ devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
>   #error "Xenomai/cobalt requires Linux kernel 3.10 or above"
>   #endif /* < 3.10 */
>
> +#if LINUX_VERSION_CODE < KERNEL_VERSION(5,1,0)
> +#define old_timex32		compat_timex
> +#endif
> +
>   #endif /* _COBALT_ASM_GENERIC_WRAPPERS_H */
> diff --git a/kernel/cobalt/posix/compat.c b/kernel/cobalt/posix/compat.c
> index 17968bff1d..a31ec04578 100644
> --- a/kernel/cobalt/posix/compat.c
> +++ b/kernel/cobalt/posix/compat.c
> @@ -81,7 +81,7 @@ int sys32_put_timeval(struct compat_timeval __user *ctv,
>   EXPORT_SYMBOL_GPL(sys32_put_timeval);
>
>   int sys32_get_timex(struct timex *tx,
> -		    const struct compat_timex __user *ctx)
> +		    const struct old_timex32 __user *ctx)
>   {
>   	memset(tx, 0, sizeof(*tx));
>
> @@ -112,7 +112,7 @@ int sys32_get_timex(struct timex *tx,
>   }
>   EXPORT_SYMBOL_GPL(sys32_get_timex);
>
> -int sys32_put_timex(struct compat_timex __user *ctx,
> +int sys32_put_timex(struct old_timex32 __user *ctx,
>   		    const struct timex *tx)
>   {
>   	if (!access_wok(ctx, sizeof(*ctx)) ||
> diff --git a/kernel/cobalt/posix/syscall32.c b/kernel/cobalt/posix/syscall32.c
> index faa7ef53a6..c2fd6a1e05 100644
> --- a/kernel/cobalt/posix/syscall32.c
> +++ b/kernel/cobalt/posix/syscall32.c
> @@ -172,7 +172,7 @@ COBALT_SYSCALL32emu(clock_settime, current,
>   }
>
>   COBALT_SYSCALL32emu(clock_adjtime, current,
> -		    (clockid_t clock_id, struct compat_timex __user *u_tx))
> +		    (clockid_t clock_id, struct old_timex32 __user *u_tx))
>   {
>   	struct timex tx;
>   	int ret;
> diff --git a/kernel/cobalt/posix/syscall32.h b/kernel/cobalt/posix/syscall32.h
> index 34904f96bd..eb3e4bd300 100644
> --- a/kernel/cobalt/posix/syscall32.h
> +++ b/kernel/cobalt/posix/syscall32.h
> @@ -65,7 +65,7 @@ COBALT_SYSCALL32emu_DECL(clock_settime,
>
>   COBALT_SYSCALL32emu_DECL(clock_adjtime,
>   			 (clockid_t clock_id,
> -			  struct compat_timex __user *u_tx));
> +			  struct old_timex32 __user *u_tx));
>
>   COBALT_SYSCALL32emu_DECL(clock_nanosleep,
>   			 (clockid_t clock_id, int flags,
>

After 5.4 is ready, i will try to verify it on arm, meanwhile, i also 
need to have a look how musl works for xenomai.

chensong




^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-10-27  1:16 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-26 11:04 [PATCH 00/11] Enable kernel 5.4 Jan Kiszka
2020-10-26 11:04 ` [PATCH 01/11] cobalt/kernel: adapt adjtime syscall with upstream kernel Jan Kiszka
2020-10-27  1:16   ` chensong
2020-10-26 11:04 ` [PATCH 02/11] cobalt/kernel: fix compile error for incompatible pointer type Jan Kiszka
2020-10-26 11:04 ` [PATCH 03/11] cobalt/x86: Account for FPU changes in kernel 5.2 Jan Kiszka
2020-10-26 11:04 ` [PATCH 04/11] drivers/ipc: Account for renaming of SO_RCVTIMEO/SO_SNDTIMEO Jan Kiszka
2020-10-26 11:04 ` [PATCH 05/11] driver/net: Update to kernel 5.4 Jan Kiszka
2020-10-26 11:04 ` [PATCH 06/11] wrappers: Add mmiowb stub for kernels >= 5.2 Jan Kiszka
2020-10-26 11:04 ` [PATCH 07/11] drivers/analogy: Fix unintended fallthrough Jan Kiszka
2020-10-26 11:04 ` [PATCH 08/11] drivers/e1000: " Jan Kiszka
2020-10-26 11:04 ` [PATCH 09/11] cobalt/posix: Address -Wimplicit-fallthrough Jan Kiszka
2020-10-26 11:04 ` [PATCH 10/11] testsuite/switchtest: Fix help output Jan Kiszka
2020-10-26 11:04 ` [PATCH 11/11] ci: Add x86 5.4 kernel to CI Jan Kiszka

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.