[openwrt/openwrt] uml: add 6.12 testing kernel
LEDE Commits
lede-commits at lists.infradead.org
Wed May 28 09:23:43 PDT 2025
chunkeey pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/89705593514fec94a42a607f3e8c645ec5a1eda8
commit 89705593514fec94a42a607f3e8c645ec5a1eda8
Author: Christian Lamparter <chunkeey at gmail.com>
AuthorDate: Sat Apr 26 04:23:21 2025 +0200
uml: add 6.12 testing kernel
refresh config + patches.
This includes the following changes:
- The selected x86_64 CPU is switched to generic instead of K8.
A backported patch is included from 6.13.
000-v6.13-asm-generic-io.h-rework-split-ioread64-iowrite64-hel.patch
|fixed the following build error:
| CC lib/iomap.o
|lib/iomap.c:156:5: error: no previous prototype for 'ioread64_lo_hi' [-Werror=missing-prototypes]
| 156 | u64 ioread64_lo_hi(const void __iomem *addr)
| | ^~~~~~~~~~~~~~
| [...]
Note: 102-pseudo-random-mac.patch will likely go away with the next stable.
UML is switching to a new networking infrastructure. The previous implementation
using tuntap, daemon, socket, ethertap, vde are being replaced by "vector"
transports tap, hybrid, raw, EoGRE, Eol2tpv3, fd, vde (vector!).
Please see, to checkout what will change:
<https://docs.kernel.org/virt/uml/user_mode_linux_howto_v2.html#setting-up-uml-networking>
Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
target/linux/uml/Makefile | 1 +
target/linux/uml/{config-6.6 => config-6.12} | 16 +-
...-io.h-rework-split-ioread64-iowrite64-hel.patch | 301 +++++++++++++++++++++
.../101-mconsole-exec.patch | 2 +-
.../102-pseudo-random-mac.patch | 0
5 files changed, 312 insertions(+), 8 deletions(-)
diff --git a/target/linux/uml/Makefile b/target/linux/uml/Makefile
index 00f19fce5b..d3f3262975 100644
--- a/target/linux/uml/Makefile
+++ b/target/linux/uml/Makefile
@@ -15,6 +15,7 @@ FEATURES:=audio ext4 rootfs-part squashfs
SUBTARGETS:=generic
KERNEL_PATCHVER:=6.6
+KERNEL_TESTING_PATCHVER:=6.12
include $(INCLUDE_DIR)/target.mk
diff --git a/target/linux/uml/config-6.6 b/target/linux/uml/config-6.12
similarity index 94%
rename from target/linux/uml/config-6.6
rename to target/linux/uml/config-6.12
index 60d1ce0713..273c10ea4f 100644
--- a/target/linux/uml/config-6.6
+++ b/target/linux/uml/config-6.12
@@ -1,7 +1,6 @@
CONFIG_3_LEVEL_PGTABLES=y
CONFIG_64BIT=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_ARCH_NO_PREEMPT=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_BLK_DEV_COW_COMMON=y
CONFIG_BLK_DEV_LOOP=y
@@ -15,6 +14,7 @@ CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
# CONFIG_COMPAT_32BIT_TIME is not set
CONFIG_CON_CHAN="xterm"
CONFIG_CON_ZERO_CHAN="fd:0,fd:1"
+CONFIG_CPU_MITIGATIONS=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_CPU_SUP_HYGON=y
@@ -30,6 +30,7 @@ CONFIG_CRYPTO_LIB_SHA1=y
CONFIG_CRYPTO_LIB_UTILS=y
CONFIG_CRYPTO_SHA1=y
CONFIG_DCACHE_WORD_ACCESS=y
+# CONFIG_DEBUG_INFO is not set
CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DNOTIFY=y
@@ -38,13 +39,14 @@ CONFIG_EXCLUSIVE_SYSTEM_RAM=y
CONFIG_EXT4_FS=y
CONFIG_F2FS_FS=y
CONFIG_FAILOVER=y
+CONFIG_FORCE_NR_CPUS=y
CONFIG_FS_IOMAP=y
CONFIG_FS_MBCACHE=y
CONFIG_FUNCTION_ALIGNMENT=0
CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_FW_LOADER_SYSFS=y
CONFIG_GENERIC_CLOCKEVENTS=y
-# CONFIG_GENERIC_CPU is not set
+CONFIG_GENERIC_CPU=y
CONFIG_GENERIC_CPU_DEVICES=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GPIO_CDEV=y
@@ -61,13 +63,14 @@ CONFIG_JBD2=y
# CONFIG_JFFS2_FS is not set
CONFIG_KALLSYMS=y
CONFIG_KERNEL_STACK_ORDER=2
+CONFIG_LD_SCRIPT_DYN_RPATH=y
CONFIG_LOCK_DEBUGGING_SUPPORT=y
# CONFIG_MATOM is not set
CONFIG_MAY_HAVE_RUNTIME_DEPS=y
CONFIG_MCONSOLE=y
# CONFIG_MCORE2 is not set
CONFIG_MIGRATION=y
-CONFIG_MK8=y
+# CONFIG_MK8 is not set
# CONFIG_MMAPPER is not set
CONFIG_MMU_LAZY_TLB_REFCOUNT=y
CONFIG_MODULES_USE_ELF_RELA=y
@@ -84,6 +87,7 @@ CONFIG_NO_DMA=y
CONFIG_NO_IOMEM=y
CONFIG_NO_IOPORT_MAP=y
CONFIG_NR_CPUS=1
+# CONFIG_NSM is not set
CONFIG_NULL_CHAN=y
# CONFIG_OF is not set
CONFIG_PAGE_POOL=y
@@ -95,7 +99,6 @@ CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_PORT_CHAN=y
CONFIG_POSIX_MQUEUE=y
CONFIG_POSIX_MQUEUE_SYSCTL=y
-CONFIG_PREEMPT_NONE_BUILD=y
# CONFIG_PROCESSOR_SELECT is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
@@ -122,7 +125,6 @@ CONFIG_UML_NET_DAEMON_DEFAULT_SOCK="/tmp/uml.ctl"
CONFIG_UML_NET_DETERMINISTIC_MAC=y
CONFIG_UML_NET_ETHERTAP=y
CONFIG_UML_NET_MCAST=y
-# CONFIG_UML_NET_PCAP is not set
CONFIG_UML_NET_SLIP=y
CONFIG_UML_NET_SLIRP=y
CONFIG_UML_NET_TUNTAP=y
@@ -138,6 +140,7 @@ CONFIG_VIRTIO=y
CONFIG_VIRTIO_ANCHOR=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_CONSOLE=y
+# CONFIG_VIRTIO_DEBUG is not set
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_UML=y
CONFIG_VMAP_STACK=y
@@ -146,12 +149,11 @@ CONFIG_WATCHDOG_CORE=y
CONFIG_X86_64=y
CONFIG_X86_CMOV=y
CONFIG_X86_CMPXCHG64=y
-CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_HAVE_PAE=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_TSC=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_VMX_FEATURE_NAMES=y
CONFIG_XTERM_CHAN=y
CONFIG_XTERM_CHAN_DEFAULT_EMULATOR="xterm"
diff --git a/target/linux/uml/patches-6.12/000-v6.13-asm-generic-io.h-rework-split-ioread64-iowrite64-hel.patch b/target/linux/uml/patches-6.12/000-v6.13-asm-generic-io.h-rework-split-ioread64-iowrite64-hel.patch
new file mode 100644
index 0000000000..f4092aad3f
--- /dev/null
+++ b/target/linux/uml/patches-6.12/000-v6.13-asm-generic-io.h-rework-split-ioread64-iowrite64-hel.patch
@@ -0,0 +1,301 @@
+From dc90c890363d3e4b0ec73cd21b5be592692723fd Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd at arndb.de>
+Date: Mon, 3 Feb 2025 15:07:30 +0100
+Subject: [PATCH] asm-generic/io.h: rework split ioread64/iowrite64 helpers
+
+There are two incompatible sets of definitions of these eight functions:
+On 64-bit architectures setting CONFIG_HAS_IOPORT, they turn into
+either pair of 32-bit PIO (inl/outl) accesses or a single 64-bit MMIO
+(readq/writeq). On other 64-bit architectures, they are always split
+into 32-bit accesses.
+
+Depending on which header gets included in a driver, there are
+additionally definitions for ioread64()/iowrite64() that are
+expected to produce a 64-bit register MMIO access on all 64-bit
+architectures.
+
+To separate the conflicting definitions, make the version in
+include/linux/io-64-nonatomic-*.h visible on all architectures
+but pick the one from lib/iomap.c on architectures that set
+CONFIG_GENERIC_IOMAP in place of the default fallback.
+
+Acked-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
+Signed-off-by: Arnd Bergmann <arnd at arndb.de>
+---
+ include/asm-generic/iomap.h | 36 ++++++------------------
+ include/linux/io-64-nonatomic-hi-lo.h | 16 +++++++++++
+ include/linux/io-64-nonatomic-lo-hi.h | 16 +++++++++++
+ lib/iomap.c | 40 +++++++++++++--------------
+ 4 files changed, 60 insertions(+), 48 deletions(-)
+
+diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h
+index 196087a8126e..9f3f25d7fc58 100644
+--- a/include/asm-generic/iomap.h
++++ b/include/asm-generic/iomap.h
+@@ -31,42 +31,22 @@ extern unsigned int ioread16(const void __iomem *);
+ extern unsigned int ioread16be(const void __iomem *);
+ extern unsigned int ioread32(const void __iomem *);
+ extern unsigned int ioread32be(const void __iomem *);
+-#ifdef CONFIG_64BIT
+-extern u64 ioread64(const void __iomem *);
+-extern u64 ioread64be(const void __iomem *);
+-#endif
+
+-#ifdef readq
+-#define ioread64_lo_hi ioread64_lo_hi
+-#define ioread64_hi_lo ioread64_hi_lo
+-#define ioread64be_lo_hi ioread64be_lo_hi
+-#define ioread64be_hi_lo ioread64be_hi_lo
+-extern u64 ioread64_lo_hi(const void __iomem *addr);
+-extern u64 ioread64_hi_lo(const void __iomem *addr);
+-extern u64 ioread64be_lo_hi(const void __iomem *addr);
+-extern u64 ioread64be_hi_lo(const void __iomem *addr);
+-#endif
++extern u64 __ioread64_lo_hi(const void __iomem *addr);
++extern u64 __ioread64_hi_lo(const void __iomem *addr);
++extern u64 __ioread64be_lo_hi(const void __iomem *addr);
++extern u64 __ioread64be_hi_lo(const void __iomem *addr);
+
+ extern void iowrite8(u8, void __iomem *);
+ extern void iowrite16(u16, void __iomem *);
+ extern void iowrite16be(u16, void __iomem *);
+ extern void iowrite32(u32, void __iomem *);
+ extern void iowrite32be(u32, void __iomem *);
+-#ifdef CONFIG_64BIT
+-extern void iowrite64(u64, void __iomem *);
+-extern void iowrite64be(u64, void __iomem *);
+-#endif
+
+-#ifdef writeq
+-#define iowrite64_lo_hi iowrite64_lo_hi
+-#define iowrite64_hi_lo iowrite64_hi_lo
+-#define iowrite64be_lo_hi iowrite64be_lo_hi
+-#define iowrite64be_hi_lo iowrite64be_hi_lo
+-extern void iowrite64_lo_hi(u64 val, void __iomem *addr);
+-extern void iowrite64_hi_lo(u64 val, void __iomem *addr);
+-extern void iowrite64be_lo_hi(u64 val, void __iomem *addr);
+-extern void iowrite64be_hi_lo(u64 val, void __iomem *addr);
+-#endif
++extern void __iowrite64_lo_hi(u64 val, void __iomem *addr);
++extern void __iowrite64_hi_lo(u64 val, void __iomem *addr);
++extern void __iowrite64be_lo_hi(u64 val, void __iomem *addr);
++extern void __iowrite64be_hi_lo(u64 val, void __iomem *addr);
+
+ /*
+ * "string" versions of the above. Note that they
+diff --git a/include/linux/io-64-nonatomic-hi-lo.h b/include/linux/io-64-nonatomic-hi-lo.h
+index f32522bb3aa5..d3eade7cf663 100644
+--- a/include/linux/io-64-nonatomic-hi-lo.h
++++ b/include/linux/io-64-nonatomic-hi-lo.h
+@@ -101,22 +101,38 @@ static inline void iowrite64be_hi_lo(u64 val, void __iomem *addr)
+
+ #ifndef ioread64
+ #define ioread64_is_nonatomic
++#if defined(CONFIG_GENERIC_IOMAP) && defined(CONFIG_64BIT)
++#define ioread64 __ioread64_hi_lo
++#else
+ #define ioread64 ioread64_hi_lo
+ #endif
++#endif
+
+ #ifndef iowrite64
+ #define iowrite64_is_nonatomic
++#if defined(CONFIG_GENERIC_IOMAP) && defined(CONFIG_64BIT)
++#define iowrite64 __iowrite64_hi_lo
++#else
+ #define iowrite64 iowrite64_hi_lo
+ #endif
++#endif
+
+ #ifndef ioread64be
+ #define ioread64be_is_nonatomic
++#if defined(CONFIG_GENERIC_IOMAP) && defined(CONFIG_64BIT)
++#define ioread64be __ioread64be_hi_lo
++#else
+ #define ioread64be ioread64be_hi_lo
+ #endif
++#endif
+
+ #ifndef iowrite64be
+ #define iowrite64be_is_nonatomic
++#if defined(CONFIG_GENERIC_IOMAP) && defined(CONFIG_64BIT)
++#define iowrite64be __iowrite64be_hi_lo
++#else
+ #define iowrite64be iowrite64be_hi_lo
+ #endif
++#endif
+
+ #endif /* _LINUX_IO_64_NONATOMIC_HI_LO_H_ */
+diff --git a/include/linux/io-64-nonatomic-lo-hi.h b/include/linux/io-64-nonatomic-lo-hi.h
+index 448a21435dba..94e676ec3d3f 100644
+--- a/include/linux/io-64-nonatomic-lo-hi.h
++++ b/include/linux/io-64-nonatomic-lo-hi.h
+@@ -101,22 +101,38 @@ static inline void iowrite64be_lo_hi(u64 val, void __iomem *addr)
+
+ #ifndef ioread64
+ #define ioread64_is_nonatomic
++#if defined(CONFIG_GENERIC_IOMAP) && defined(CONFIG_64BIT)
++#define ioread64 __ioread64_lo_hi
++#else
+ #define ioread64 ioread64_lo_hi
+ #endif
++#endif
+
+ #ifndef iowrite64
+ #define iowrite64_is_nonatomic
++#if defined(CONFIG_GENERIC_IOMAP) && defined(CONFIG_64BIT)
++#define iowrite64 __iowrite64_lo_hi
++#else
+ #define iowrite64 iowrite64_lo_hi
+ #endif
++#endif
+
+ #ifndef ioread64be
+ #define ioread64be_is_nonatomic
++#if defined(CONFIG_GENERIC_IOMAP) && defined(CONFIG_64BIT)
++#define ioread64be __ioread64be_lo_hi
++#else
+ #define ioread64be ioread64be_lo_hi
+ #endif
++#endif
+
+ #ifndef iowrite64be
+ #define iowrite64be_is_nonatomic
++#if defined(CONFIG_GENERIC_IOMAP) && defined(CONFIG_64BIT)
++#define iowrite64be __iowrite64be_lo_hi
++#else
+ #define iowrite64be iowrite64be_lo_hi
+ #endif
++#endif
+
+ #endif /* _LINUX_IO_64_NONATOMIC_LO_HI_H_ */
+diff --git a/lib/iomap.c b/lib/iomap.c
+index 4f8b31baa575..a65717cd86f7 100644
+--- a/lib/iomap.c
++++ b/lib/iomap.c
+@@ -111,7 +111,7 @@ EXPORT_SYMBOL(ioread16be);
+ EXPORT_SYMBOL(ioread32);
+ EXPORT_SYMBOL(ioread32be);
+
+-#ifdef readq
++#ifdef CONFIG_64BIT
+ static u64 pio_read64_lo_hi(unsigned long port)
+ {
+ u64 lo, hi;
+@@ -153,21 +153,21 @@ static u64 pio_read64be_hi_lo(unsigned long port)
+ }
+
+ __no_kmsan_checks
+-u64 ioread64_lo_hi(const void __iomem *addr)
++u64 __ioread64_lo_hi(const void __iomem *addr)
+ {
+ IO_COND(addr, return pio_read64_lo_hi(port), return readq(addr));
+ return 0xffffffffffffffffULL;
+ }
+
+ __no_kmsan_checks
+-u64 ioread64_hi_lo(const void __iomem *addr)
++u64 __ioread64_hi_lo(const void __iomem *addr)
+ {
+ IO_COND(addr, return pio_read64_hi_lo(port), return readq(addr));
+ return 0xffffffffffffffffULL;
+ }
+
+ __no_kmsan_checks
+-u64 ioread64be_lo_hi(const void __iomem *addr)
++u64 __ioread64be_lo_hi(const void __iomem *addr)
+ {
+ IO_COND(addr, return pio_read64be_lo_hi(port),
+ return mmio_read64be(addr));
+@@ -175,19 +175,19 @@ u64 ioread64be_lo_hi(const void __iomem *addr)
+ }
+
+ __no_kmsan_checks
+-u64 ioread64be_hi_lo(const void __iomem *addr)
++u64 __ioread64be_hi_lo(const void __iomem *addr)
+ {
+ IO_COND(addr, return pio_read64be_hi_lo(port),
+ return mmio_read64be(addr));
+ return 0xffffffffffffffffULL;
+ }
+
+-EXPORT_SYMBOL(ioread64_lo_hi);
+-EXPORT_SYMBOL(ioread64_hi_lo);
+-EXPORT_SYMBOL(ioread64be_lo_hi);
+-EXPORT_SYMBOL(ioread64be_hi_lo);
++EXPORT_SYMBOL(__ioread64_lo_hi);
++EXPORT_SYMBOL(__ioread64_hi_lo);
++EXPORT_SYMBOL(__ioread64be_lo_hi);
++EXPORT_SYMBOL(__ioread64be_hi_lo);
+
+-#endif /* readq */
++#endif /* CONFIG_64BIT */
+
+ #ifndef pio_write16be
+ #define pio_write16be(val,port) outw(swab16(val),port)
+@@ -236,7 +236,7 @@ EXPORT_SYMBOL(iowrite16be);
+ EXPORT_SYMBOL(iowrite32);
+ EXPORT_SYMBOL(iowrite32be);
+
+-#ifdef writeq
++#ifdef CONFIG_64BIT
+ static void pio_write64_lo_hi(u64 val, unsigned long port)
+ {
+ outl(val, port);
+@@ -261,7 +261,7 @@ static void pio_write64be_hi_lo(u64 val, unsigned long port)
+ pio_write32be(val, port + sizeof(u32));
+ }
+
+-void iowrite64_lo_hi(u64 val, void __iomem *addr)
++void __iowrite64_lo_hi(u64 val, void __iomem *addr)
+ {
+ /* Make sure uninitialized memory isn't copied to devices. */
+ kmsan_check_memory(&val, sizeof(val));
+@@ -269,7 +269,7 @@ void iowrite64_lo_hi(u64 val, void __iomem *addr)
+ writeq(val, addr));
+ }
+
+-void iowrite64_hi_lo(u64 val, void __iomem *addr)
++void __iowrite64_hi_lo(u64 val, void __iomem *addr)
+ {
+ /* Make sure uninitialized memory isn't copied to devices. */
+ kmsan_check_memory(&val, sizeof(val));
+@@ -277,7 +277,7 @@ void iowrite64_hi_lo(u64 val, void __iomem *addr)
+ writeq(val, addr));
+ }
+
+-void iowrite64be_lo_hi(u64 val, void __iomem *addr)
++void __iowrite64be_lo_hi(u64 val, void __iomem *addr)
+ {
+ /* Make sure uninitialized memory isn't copied to devices. */
+ kmsan_check_memory(&val, sizeof(val));
+@@ -285,7 +285,7 @@ void iowrite64be_lo_hi(u64 val, void __iomem *addr)
+ mmio_write64be(val, addr));
+ }
+
+-void iowrite64be_hi_lo(u64 val, void __iomem *addr)
++void __iowrite64be_hi_lo(u64 val, void __iomem *addr)
+ {
+ /* Make sure uninitialized memory isn't copied to devices. */
+ kmsan_check_memory(&val, sizeof(val));
+@@ -293,12 +293,12 @@ void iowrite64be_hi_lo(u64 val, void __iomem *addr)
+ mmio_write64be(val, addr));
+ }
+
+-EXPORT_SYMBOL(iowrite64_lo_hi);
+-EXPORT_SYMBOL(iowrite64_hi_lo);
+-EXPORT_SYMBOL(iowrite64be_lo_hi);
+-EXPORT_SYMBOL(iowrite64be_hi_lo);
++EXPORT_SYMBOL(__iowrite64_lo_hi);
++EXPORT_SYMBOL(__iowrite64_hi_lo);
++EXPORT_SYMBOL(__iowrite64be_lo_hi);
++EXPORT_SYMBOL(__iowrite64be_hi_lo);
+
+-#endif /* readq */
++#endif /* CONFIG_64BIT */
+
+ /*
+ * These are the "repeat MMIO read/write" functions.
+--
+2.49.0
+
diff --git a/target/linux/uml/patches-6.6/101-mconsole-exec.patch b/target/linux/uml/patches-6.12/101-mconsole-exec.patch
similarity index 99%
rename from target/linux/uml/patches-6.6/101-mconsole-exec.patch
rename to target/linux/uml/patches-6.12/101-mconsole-exec.patch
index 0afd777836..9ba4523a16 100644
--- a/target/linux/uml/patches-6.6/101-mconsole-exec.patch
+++ b/target/linux/uml/patches-6.12/101-mconsole-exec.patch
@@ -123,7 +123,7 @@
};
--- a/arch/um/os-Linux/file.c
+++ b/arch/um/os-Linux/file.c
-@@ -560,6 +560,8 @@ int os_create_unix_socket(const char *fi
+@@ -578,6 +578,8 @@ int os_create_unix_socket(const char *fi
addr.sun_family = AF_UNIX;
diff --git a/target/linux/uml/patches-6.6/102-pseudo-random-mac.patch b/target/linux/uml/patches-6.12/102-pseudo-random-mac.patch
similarity index 100%
rename from target/linux/uml/patches-6.6/102-pseudo-random-mac.patch
rename to target/linux/uml/patches-6.12/102-pseudo-random-mac.patch
More information about the lede-commits
mailing list