]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
uml: add 6.12 testing kernel
authorChristian Lamparter <chunkeey@gmail.com>
Sat, 26 Apr 2025 02:23:21 +0000 (04:23 +0200)
committerChristian Lamparter <chunkeey@gmail.com>
Wed, 28 May 2025 16:22:41 +0000 (18:22 +0200)
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@gmail.com>
target/linux/uml/Makefile
target/linux/uml/config-6.12 [moved from target/linux/uml/config-6.6 with 94% similarity]
target/linux/uml/patches-6.12/000-v6.13-asm-generic-io.h-rework-split-ioread64-iowrite64-hel.patch [new file with mode: 0644]
target/linux/uml/patches-6.12/101-mconsole-exec.patch [moved from target/linux/uml/patches-6.6/101-mconsole-exec.patch with 99% similarity]
target/linux/uml/patches-6.12/102-pseudo-random-mac.patch [moved from target/linux/uml/patches-6.6/102-pseudo-random-mac.patch with 100% similarity]

index 00f19fce5bdd29323241fd9e0cce4f8e531507f1..d3f326297532718b63348608dfe4f05673f60602 100644 (file)
@@ -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
 
similarity index 94%
rename from target/linux/uml/config-6.6
rename to target/linux/uml/config-6.12
index 60d1ce0713fe9a5c3ea461cd825686825d215da8..273c10ea4f28879d8097f5d985b8b2bd17f1e2bd 100644 (file)
@@ -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 (file)
index 0000000..f4092aa
--- /dev/null
@@ -0,0 +1,301 @@
+From dc90c890363d3e4b0ec73cd21b5be592692723fd Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@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@linux.intel.com>
+Signed-off-by: Arnd Bergmann <arnd@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
+
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 0afd777836b6c0d84926af3077933ed3562c7cd2..9ba4523a16a6b49cbbbff6e56e0753d17d9fd526 100644 (file)
  };
 --- 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;