520 Commits
Author SHA1 Message Date
Tianling Shen ef74cfd14f Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2026-07-22 11:02:55 +08:00
Paul Spooren ff41ddea1c build: gate firmware image signing behind SIGN_FIRMWARE
Firmware image signing in append-metadata/append-gl-metadata was conditional
only by the presence of the build key. Add an explicit SIGN_FIRMWARE option
(default enabled except with BUILDBOT) so appending the fwtool signature can be
toggled on its own.

It's disable on buildbot since we use a decentralized building with no
individual keys on builders. Instead, a fake key is currently used, which adds
an insecure signature.

The future of signing firmware  and key distribution across the build
infrastructure should be discussed separately.

Link: https://github.com/openwrt/openwrt/pull/24291
Signed-off-by: Paul Spooren <mail@aparcar.org>
2026-07-20 10:33:41 +02:00
Tianling Shen 4cafb73e88 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2026-07-09 10:32:05 +08:00
Joshua CovingtonandJonas Jelonek 7c69452c6a kernel: add Kconfig options for ARM64_BRBE and THP enhancements on 6.18
Introduce new kernel configuration options for memory management
and hardware-profiling features:

- KERNEL_ARM64_BRBE: Enables support for the Branch Record Buffer
  Extension (FEAT_BRBE) on ARM64 architectures when perf events are active.
- KERNEL_PERSISTENT_HUGE_ZERO_FOLIO: Allows allocating a PMD-sized
  folio for zeroing, optimizing Transparent Hugepage (THP) allocation
  performance.
- KERNEL_NO_PAGE_MAPCOUNT: Adds experimental support for bypassing
  per-page mapcount tracking to reduce memory accounting overhead under THP.

These options map directly to their respective kernel options and are
applicable on 6.18 and later.

Signed-off-by: Joshua Covington <joshuacov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23703
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-07-07 08:48:42 +02:00
Tianling Shen 5cf40ef1f2 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2026-05-25 10:31:15 +08:00
9a143bf7ff x86: onie-installer: wire up sysupgrade via ONIE install mode
This adds support for sysupgrade on ONIE-installed systems.
The install is chained through ONIE (using the ONIE installer image),
rather than attempting to manually upgrade the partition.
The idea is to allow future OpenWRT installs flexibility to use
a different partition table. By putting the installer in charge
of setting up the file system partition, the upgrade process needs
to have no knowledge of the internals of the image.

Config preservation is accomplished by appending the sysupgrade .tar.gz
to the ONIE installer image. Of course this also works for a clean
install using a sysupgrade.tar.gz created via `sysupgrade -b`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: Keno Fischer <keno@juliahub.com>
Link: https://github.com/openwrt/openwrt/pull/23062
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-23 17:23:54 +02:00
c7e8cffcb2 x86: add onie-installer image type
The current documentation for using OpenWRT on Mellanox Spectrum
switches (https://openwrt.org/toh/mellanox/spectrum) suggests
reflashing the entire harddrive from the recovery USB. This is not
the most friendly way to install a new OS on these switches. From
factory, they come with ONIE (Open Network Install Environment),
which is a linux-based preboot environment for fetching an OS
image from the network and installing it on disk. The installer
is a self-executing bash script that executes inside the ONIE
environment. The installer is expected to preserve the ONIE partition
for use as recovery environement. To be a better citizen on
these platforms, it would be preferrable to provide OpenWRT as
an ONIE-compatible installer.

This PR adds an ONIE_INSTALLER_IMAGES build option that produces
an ONIE compatible .bin. The generated .bin follows the ONIE demo
installer pattern [1]: it creates a new GPT partition
labelled OPENWRT-ROOT on the ONIE install device, formats ext4, extracts
the OpenWrt rootfs and kernel into it, installs GRUB into the existing
UEFI ESP under bootloader-id "OpenWrt", and adds a NVRAM boot entry via
efibootmgr.  ONIE-BOOT is preserved so ONIE rescue remains available.

Tested with the config at [2] on a Mellanox Spectrum SN3800 to produce
a booting OpenWRT install.

[1] https://github.com/opencomputeproject/onie/demo/installer/grub-arch/install.sh
[2] https://gist.github.com/Keno/abc8c5b72645e73fadd1ff0d9616b23d

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: Keno Fischer <keno@juliahub.com>
Link: https://github.com/openwrt/openwrt/pull/23062
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-23 17:23:53 +02:00
Tianling Shen 2abf273729 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2026-05-11 14:58:54 +08:00
Andre HeiderandRobert Marko e3271a6786 treewide: remove unused archs leftovers
These are all unused by the current targets, clean up and stop
irritating the user with irrelevant grep results.

Signed-off-by: Andre Heider <a.heider@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23240
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-07 10:58:47 +02:00
Tianling Shen 7220e63fda Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2026-03-31 14:21:12 +08:00
John AudiaandRobert Marko 65d36329e3 x86: make CONFIG_NR_CPUS a tunable (2-512)
Add KERNEL_NR_CPUS option in Global build settings → Kernel build
options, allowing users to set maximum CPU count (2-512) for the image.

Defaults:
- x86_64: 512 CPUs (backward compatible)
- x86: 8 CPUs (fix broken single-CPU default)

Per-CPU data structures consume ~100-200KB each.
On a 4-core system configured to NR_CPUS=4, this frees approx 76 MB
of RAM: (512 - 4) × 150 KB = ~76 MB

Note: CONFIG_NR_CPUS_RANGE_{BEGIN,END}= and CONFIG_NR_CPUS_DEFAULT= are
set by the build system and will default to 2/512/64 per arch/x86/Kconfig
These are harmless metadata and don't affect memory allocation.

Note pending https://github.com/openwrt/openwrt/pull/21407

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21078
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-03-28 11:51:11 +01:00
Tianling Shen 7a9c29bd84 kernel: disable BTF build by default for ipq60xx
Limited by kernel partition size of jdcloud re-cs-02 device.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2026-03-11 11:34:47 +08:00
Tianling Shen 7d2599cc6e Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2026-03-05 17:04:21 +08:00
Hannu NymanandPaul Spooren f20794a6f3 config: add build config option to sign each .apk package
Add a build config option to sign each individual .apk package.

If individual .apk files are signed with the build key, they can be
installed with 'apk add' without '--allow-untrusted' to a firmware
compiled by the same buildhost.

Enable the option by default, but disable it for BUILDBOT.

(At the moment, since commit 084697e, only the package index is signed,
which forces users to use '--allow-untrusted' when installing
self-built .apk files.)

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2026-03-02 11:08:10 +01:00
Tianling Shen 9ebbd6be97 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2026-01-27 18:12:15 +08:00
Robert Marko 4c0c7442db microchipsw: enable DCB by default
Switchdev driver used by microchipsw supports DCB and has not storage
constraints, so enable kernel and driver DCB support by default.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-01-25 22:10:22 +01:00
Thomas RichardandHauke Mehrtens 3ddee7edc4 kernel: add TIMERLAT_TRACER kernel config option
This adds the TIMERLAT_TRACER kernel configuration option. The timelat
tracer helps to find sources of wakeup latencies of real-time threads.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/21413
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-24 22:54:29 +01:00
Thomas RichardandHauke Mehrtens c1c37b40c1 kernel: add OSNOISE_TRACER kernel config option
This adds the OSNOISE_TRACER kernel configuration option. The osnoise
tracer allows to track interference experienced by an application due to
activities inside the operating system (like NMIs, IRQs ...).

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/21413
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-24 22:54:29 +01:00
Thomas RichardandHauke Mehrtens 9a584c631e kernel: add HWLAT_TRACER kernel config option
This adds the HWLAT_TRACER kernel configuration option. The hwlat tracer
allows to detect hardware latencies.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/21413
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-24 22:54:29 +01:00
Thomas RichardandHauke Mehrtens 5d720117f7 kernel: add preemption models
Introduce preemption model selection with PREEMPT_NONE as the default.
PREEMPT_NONE is the traditional Linux preemption model and also the best
choice for servers.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/21413
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-24 22:52:49 +01:00
Tianling Shen cdaf3756de Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-12-04 11:25:18 +08:00
Robert Marko 5205c0c426 microchipsw: lan969x: add Microchip EV23X71A
Microchip EV23X71A is a LAN9696 based EVB.

Specifications:
* CPU: Microchip LAN9696 switch SoC
* DRAM: 1GB DDR4
* Storage:
	* 2MB QSPI NOR
	* 4GB eMMC
* Networking:
	* 24 x 10/100/1000 RJ45 via LAN8814 Quad PHY-s over QSGMII
	* 4 x 100/1000/2500/5000/10000 SFP+ ports
	* 1 x 10/100/1000 management RJ45 via LAN8840 PHY over RGMII (U-Boot too)
* USB: 1 x USB2.0 Type-A
* Management via USB-C (MCP2200):
	* UART @ 115200 baud
	* GPIO-s for bootstrap, reset and clock selection
* DIP switch for boostrap configuration
* LED-s:
	* 2 per networking port (Green and Yellow)
	* Green status LED
	* Yellow reset LED
* Hard reset button
* Power:
	* 12V DC barrel jack
	* 48/56V DC screw terminal
	* Selectable via toggle switch
* PTP support:
	* Sync-E DPLL ZL30732B to generate the board required clocks
	* Two SMAs for PTP and two for Station clock inputs and outputs
	* Two ITU-T G.8275-compliant RS-422 interfaces for PTP applications
* External PoE:
	* Option for PoE add-on, like EV14Y36A (IEEE 802.3af/at/bt Type 4
	standard com-pliant)
* Option for external CPU control via SPI and PCIe

Installation instructions:

1. Connect to UART via the USB-C port
2. Connect the management port
3. Boot and interrupt U-Boot
4. TFTP the OpenWrt initramfs image and boot it
5. SCP the OpenWrt eMMC GPT image to a running OpenWrt initramfs to /tmp
openwrt-microchipsw-lan969x-microchip_ev23x71a-squashfs-emmc-gpt.img.gz

And decompress it via:
gzip -d /tmp/openwrt-microchipsw-lan969x-microchip_ev23x71a-squashfs-emmc-gpt.img.gz

6. Wipe eMMC with:
dd if=/dev/zero of=/dev/mmcblk0 bs=1M

7. Flash OpenWrt eMMC image with:
dd if=/tmp/openwrt-microchipsw-lan969x-microchip_ev23x71a-squashfs-emmc-gpt.img
of=/dev/mmcblk0

After a restart OpenWrt will boot, and then regular sysupgrade can be used
for upgrades.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2025-12-03 12:13:17 +01:00
Robert Marko 88a404a2d1 microchipsw: add support for Microchip LAN969x switches
Add a new microchipsw target aimed add supporting Microchip switch
SoC-s.

Start by supporting LAN969x SoC-s as the first subtarget.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2025-12-03 12:13:17 +01:00
Tianling Shen 1e5d7a4c7c Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-12-02 09:44:52 +08:00
Anari JalakasandChristian Marangi 929a460bfa config: add !USE_APK dependency to CLEAN_IPKG
When USE_APK is enabled, APK replaces opkg/ipkg, leading to a build
failure when CLEAN_IPKG is also selected. Add 'depends on !USE_APK' to
CLEAN_IPKG to ensure this option is only selectable when opkg/ipkg is
the active package manager.

Signed-off-by: Anari Jalakas <anari.jalakas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20957
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 14:46:26 +01:00
Christian Marangi 8cb728d88e config: drop dependency on kernel 6.6
Since now we default to 6.12 and we dropped any support for kernel 6.6,
drop any dependency on it.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-11-27 12:46:37 +01:00
ZiMing Mo 372a017011 Merge Official Source
Signed-off-by: ZiMing Mo <msylgj@immortalwrt.org>
2025-11-27 12:37:13 +08:00
Stijn Tintel e6b35fef99 kernel: fix dependency on non-existent symbol
KERNEL_ARM64_CONTPTE depends on KERNEL_ARM64 which does not exist. Fix
it by depending on aarch64 instead.

Fixes: e9799d2dd4 ("kernel: add KERNEL_ARM64_CONTPTE")
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
2025-11-26 21:08:01 +02:00
Tianling Shen da0a9e8a80 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-11-25 19:23:24 +08:00
Nick Hainke 557c174a3c toolchain: gcc: add fanalyzer config option
Add gcc config option for fanalyzer. As a result of this option, a static
analysis of the program flow is conducted, allowing interprocedural paths
to be identified and warnings to be issued if problems are identified.

Link: https://github.com/openwrt/openwrt/pull/12576
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-11-23 09:33:15 +01:00
Tianling Shen f847612aa7 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-11-19 22:41:54 +08:00
Hauke Mehrtens a2a78c04f8 build: Add support for linking with DT_RELR
This adds the -Wl,-z,pack-relative-relocs linking options.
This reduces the size of some binaries.

This is only supported on i386, x86_64, aarch64 and loongarch64 in
binutils. This feature is not support for MIPS.

musl libc supports it since version 1.2.4 .
glibc supports it since vesion 2.36.
binutils ld supports it since version 2.38 for x86 and since version
2.43 for LoongArch.

This reduces the size of the armsr default root file system from
5,262,198 bytes to 5,200,950 bytes by 61,248 bytes.

Link: https://github.com/openwrt/openwrt/pull/20679
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-11-18 23:17:09 +01:00
Tianling Shen 14d864fd72 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-10-27 19:48:10 +08:00
Hauke Mehrtens 93f86627c4 build: Add _FORTIFY_SOURCE=3 support
Add support for _FORTIFY_SOURCE level 3.

This is supported with glibc and with musl libc.

Link: https://github.com/openwrt/openwrt/pull/20313
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-10-26 01:43:01 +02:00
Tianling Shen 0abe3734b2 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-07-27 16:54:27 +08:00
Til KaiserandHauke Mehrtens e805d8bac9 image: also show GRUB options for EROFS
f7fa414d3b added support for
EROFS image generation. Generating combined GRUB images for
EROFS is possible, but currently hidden if neither ext4,
jffs2, or squashfs is selected.

This commit adds EROFS as a dependency to the GRUB options.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/19501
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-26 18:02:31 +02:00
Tianling Shen 0a98db483f Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-07-06 20:35:44 +08:00
Gao XiangandChristian Marangi f7fa414d3b image: add support for EROFS rootfs image generation
Add support for generating EROFS rootfs images.

The EROFS filesystem can offer competitive I/O performance while
minimizing final image size when using the MicroLZMA compressor.

Target platform: linux-x86_generic (target-i386_pentium4_musl)

Filesystem     Image Size
=============  ==========
root.erofs     4882432
root.ext4      109051904
root.squashfs  4903302

Co-Developed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://github.com/openwrt/openwrt/pull/19244
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-07-05 15:24:54 +02:00
Tianling Shen dcacd23dad Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-07-04 21:31:29 +08:00
Harrison BoydandRobert Marko 6f9ff392dc config: drop kernel config symbols removed before v6.6
Since we don't support any kernel versions below v6.6, Kconfig options
that were removed upstream before 6.6 are no longer relevant and should be
dropped.

This commit removes the following obsolete kernel config options:
- KERNEL_UBSAN_NULL: Removed in v4.18 (3ca17b1f3628)
- KERNEL_DEBUG_LL_UART_NONE: Removed in v4.0 (6f5194553c84)
- KERNEL_SLABINFO: Removed in v4.15 (5b36577109be)
- KERNEL_RESOURCE_COUNTERS: Removed in v3.18 (5b1efc027c0b)
- KERNEL_MM_OWNER: Removed in v3.16 (f98bafa06a28)
- KERNEL_MEMCG_SWAP: Removed in v6.1 (e55b9f96860f)
- KERNEL_MEMCG_SWAP_ENABLED: Removed in v5.7 (2d1c498072de)
- KERNEL_DEVPTS_MULTIPLE_INSTANCES: Removed in v4.7 (eedf265aa003)
- KERNEL_DEVKMEM: Removed in v5.13 (bbcd53c96071)
- KERNEL_SECURITY_SELINUX_DISABLE: Removed in v6.4 (f22f9aaf6c3d)

Signed-off-by: Harrison Boyd <harrisonboyd400@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/19287
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-07-04 15:30:52 +02:00
Tianling Shen da3f070010 sunxi: increase default boot partition to 32 MiB
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-06-19 14:43:51 +08:00
Tianling Shen 5a6a75a84f kernel: only build btf for cortexa53 subtarget of sunxi
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-06-17 20:07:43 +08:00
Tianling Shen 3dce59fdff config: increase kernel part to 64 MiB for sunxi cortexa53 target
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-06-17 20:06:03 +08:00
Tianling Shen 9f5c085345 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-06-06 20:45:14 +08:00
Shiji YangandNick Hainke a9972ae53e build: image: support specifying mksquashfs4 parallel threads
By enabling multi-threading file reading, the squashfs rootfs build
process can be greatly accelerated. We use 4 as the default thread
number. This is the default value for squashfs4 tool 4.7 if we don't
append "-block-readers" or "-small-readers" options.

For more test results:
https://github.com/plougher/squashfs-tools/blob/4.7/Documentation/4.7/README

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19019
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-06-05 21:28:03 +02:00
Mathew McBrideandHauke Mehrtens fb6a28815e config: remove kernel version restriction for ARM_PMUV3
The kernel CONFIG_ARM_PMUV3 option was not being presented
for 6.12 kernels with armsr/armv7.

As the minimum kernel version is now 6.6, there is no need
to limit this to specific kernel versions anymore.

This caused a kernel compile stoppage when attempting to
compile the 'perf' tool for armsr/armv7.

Signed-off-by: Mathew McBride <matt@traverse.com.au>
Link: https://github.com/openwrt/openwrt/pull/18849
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-06-04 20:18:27 +02:00
Tianling Shen 653d294e8b Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-05-27 19:57:42 +08:00
Robert Marko fb2c59b942 toolchain: gcc: drop GCC11
There is no practical value in keeping GCC11 around, as even OpenWrt 23.05
uses GCC12 as the default one, so drop it.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-26 19:20:56 +02:00
Tianling Shen 5177c5f873 Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-05-11 13:18:07 +08:00
Álvaro Fernández Rojas e9799d2dd4 kernel: add KERNEL_ARM64_CONTPTE
When KERNEL_TRANSPARENT_HUGEPAGE is enabled, build fails due to
missing KERNEL_ARM64_CONTPTE.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-05-10 07:58:12 +02:00