aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/config-4.14
Commit message (Collapse)AuthorAgeFilesLines
* x86: fix geode image builds reduxChristian Lamparter2019-03-021-1/+4
| | | | | | | | | | | | | | | | | This patch adds more disabled DRM config symbols from the x86' config to the generic target configs. The existing symbols in the x86' configs are kept for now, until we know whenever we want to remove such symbols or not (see Github PR #1831, #1825, #1828). THis patch also contains a squashed patch from Daniel Engberg <daniel.engberg.lists@pyret.net> titled "kernel: Fix config for 4.14" which fixes a duplicated line added by: commit 8bdc241d01eb ("x86: fix geode image builds") Fixes: 8bdc241d01eb ("x86: fix geode image builds") Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* kernel: disable touchscreen symbolsChristian Lamparter2019-02-281-3/+50
| | | | | | | | | | | This patch removes the obsolete touchscreen config symbols and all disables all remaining ones in the generic config. Generated by running drivers/input/touchscreen/Kconfig sed -n 's/^config[[:space:]]\(.*\)/# CONFIG_\1 is not set/p' Kconfig |\ sort -d Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* x86: fix geode image buildsChristian Lamparter2019-02-281-0/+6
| | | | | | | | | | This patch adds the disabled DRM_RADEON and DRM_AMDGPU config symbols from the x86' config to the generic target configs. The existing symbols in the x86' configs are kept for now, until we know whenever we want to remove such symbols or not (see Github PR #1831, #1825, #1828). Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* kernel: add missing config symbolsStijn Tintel2019-02-251-0/+4
| | | | | | | | | | The addition of kmod-input-touchscreen-ads7846 enabled INPUT_TOUCHSCREEN, which exposes several other symbols on various targets. Add those symbols to the generic kernel configs to fix build. Fixes: 77a54bbf13bf ("kernel: add kmod-input-touchscreen-ads7846") Reported-by: Hannu Nyman <hannu.nyman@iki.fi> Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* kernel: add kmod-fb-tftStijn Tintel2019-02-241-0/+35
| | | | | | | | This module adds support for small TFT LCD display modules. While this module also exists in the 4.9 kernel, we are not going to support this kernel in the next major release, so don't make it available for 4.9. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* generic: kernel: Add missing config optionPawel Dembicki2019-02-191-0/+1
| | | | | | | | | DRM packages break modules compilation for sunxi target, cortexa7 and cortexa8 subtargets. This patch add missing symbol to generic config. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* kernel: disable CONFIG_USB_IMX21_HCD in default for kernel 4.14Yangbo Lu2019-02-171-0/+1
| | | | | | | | | | | CONFIG_USB_IMX21_HCD should be handled in generic config and module package. So moved it into generic config. This also fixed build issue (kernel config question) of layerscape armv8_32b since it also used ARCH_MXC. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> [Deactivate CONFIG_USB_IMX21_HCD also for kernel 4.19] Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: enable CONFIG_BPF_JIT by defaultTony Ambardar2019-02-111-1/+1
| | | | | | | | | | | | | | | | | | Enable the built-in BPF JIT compiler for all 4.9, 4.14 and 4.19 kernels, which should speed up cBPF and eBPF-based packet filtering (tc, iptables) and packet sniffing (libpcap, tcpdump, fwknopd, etc). This has minimal kernel size impact, increasing the size of uImage-lzma (normally ~2 MB on mips_24kc or mips64el_mips64) by 5 KB for the MIPS32 arch cBPF JIT and by 9 KB for the MIPS64 arch eBPF JIT, on kernel 4.14. With JIT enabled (cBPF only), the standard BPF test module (test_bpf.ko) running on a DIR-835 (mips_24kc) used 33 CPU seconds, but 68 without JIT. This change aligns with the notion of OpenWRT as the network go-to swiss army knife for packet handling, especially on CPU-constrained platforms. Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
* kernel: Add missing config option for kernel 4.14Hauke Mehrtens2019-01-281-0/+1
| | | | | | | | | | | | | Kernel 4.14.96 got the new configuration option CIFS_ALLOW_INSECURE_LEGACY which allows to deactivate support for old and insecure SMB versions like 1.0 and 2.0. Still allow these old SMB version and fix build problems which occurred because this option was not defined. This was found by build bot. Fixes: 3662157d8bed ("kernel: bump 4.14 to 4.14.96") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel/modules: add kmod-pmbus-zl6100 modulePawel Dembicki2019-01-131-0/+16
| | | | | | | | | | | | This patch adds the kmod packaging for the Intersil / Zilker Labs ZL6100 and compatible digital DC-DC controllers as well as the core kernel module for the Power Management Bus. Add: kmod-pmbus-core kmod-pmbus-zl6100 Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* x86: Refresh kernel 4.14 configurationHauke Mehrtens2019-01-121-0/+1
| | | | | | | | | | | | This refreshes the kernel configuration for kernel 4.14. First this was run for the legacy target: make kernel_oldconfig Then for all targets including the legacy target this was run: make kernel_oldconfig CONFIG_TARGET=subtarget The option CONFIG_104_QUAD_8 was added to the generic configuration because it would have been automatically removed. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* brcm2708: add kernel 4.14 supportStijn Tintel2018-12-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch generation process: - rebase rpi/rpi-4.14.y on v4.14.89 from linux-stable - git format-patch v4.14.89 Patches skipped during rebase: - lan78xx: Read MAC address from DT if present - lan78xx: Enable LEDs and auto-negotiation - Revert "softirq: Let ksoftirqd do its job" - sc16is7xx: Fix for multi-channel stall - lan78xx: Ignore DT MAC address if already valid - lan78xx: Simple patch to prevent some crashes - tcp_write_queue_purge clears all the SKBs in the write queue - Revert "lan78xx: Simple patch to prevent some crashes" - lan78xx: Connect phy early - Arm: mm: ftrace: Only set text back to ro after kernel has been marked ro - Revert "Revert "softirq: Let ksoftirqd do its job"" - ASoC: cs4265: SOC_SINGLE register value error fix - Revert "ASoC: cs4265: SOC_SINGLE register value error fix" - Revert "net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends" - Revert "Revert "net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends"" Patches dropped after rebase: - net: Add non-mainline source for rtl8192cu wlan - net: Fix rtl8192cu build errors on other platforms - brcm: adds support for BCM43341 wifi - brcmfmac: Mute expected startup 'errors' - ARM64: Fix build break for RTL8187/RTL8192CU wifi - ARM64: Enable RTL8187/RTL8192CU wifi in build config - This is the driver for Sony CXD2880 DVB-T2/T tuner + demodulator - brcmfmac: add CLM download support - brcmfmac: request_firmware_direct is quieter - Sets the BCDC priority to constant 0 - brcmfmac: Disable ARP offloading when promiscuous - brcmfmac: Avoid possible out-of-bounds read - brcmfmac: Delete redundant length check - net: rtl8192cu: Normalize indentation - net: rtl8192cu: Fix implicit fallthrough warnings - Revert "Sets the BCDC priority to constant 0" - media: cxd2880: Bump to match 4.18.y version - media: cxd2880-spi: Bump to match 4.18.y version - Revert "mm: alloc_contig: re-allow CMA to compact FS pages" - Revert "Revert "mm: alloc_contig: re-allow CMA to compact FS pages"" - cxd2880: CXD2880_SPI_DRV should select DVB_CXD2880 with MEDIA_SUBDRV_AUTOSELECT - 950-0421-HID-hid-bigbenff-driver-for-BigBen-Interactive-PS3OF.patch - 950-0453-Add-hid-bigbenff-to-list-of-have_special_driver-for-.patch Make I2C built-in instead of modular as in upstream defconfig; also the easiest way to get MFD_ARIZONA enabled, which is required by kmod-sound-soc-rpi-cirrus. Add missing compatible strings from 4.9/960-add-rasbperrypi-compatible.patch, using upstream names for compute modules. Add extra patch to enable the LEDs on lan78xx. Compile-tested: bcm2708, bcm2709, bcm2710 (with CONFIG_ALL_KMODS=y) Runtime-tested: bcm2708, bcm2710 Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* netfilter: Add fib support for nftablesBrett Mastbergen2018-12-161-0/+1
| | | | Signed-off-by: Brett Mastbergen <bmastbergen@untangle.com>
* kernel: Reorder configurationHauke Mehrtens2018-12-151-2/+2
| | | | | | | | | | | This reorders the generic kernel configuration files. This was done with the following commands: $ ./scripts/kconfig.pl '+' target/linux/generic/config-4.14 /dev/null > target/linux/generic/config-4.14-new $ mv target/linux/generic/config-4.14-new target/linux/generic/config-4.14 $ ./scripts/kconfig.pl '+' target/linux/generic/config-4.9 /dev/null > target/linux/generic/config-4.9-new $ mv target/linux/generic/config-4.9-new target/linux/generic/config-4.9 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: add missing symbolStijn Tintel2018-12-041-0/+1
| | | | Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* kernel: enable CONFIG_BRIDGE_VLAN_FILTERINGDaniel Golle2018-11-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to use the bridge as a managed switch and gracefully handle mixed tagged and untagged frames. Prior to this, the only alternative was creating one bridge per vlan which quickly becomes a nightmare and still won't let you mix both tagged and untagged frames on the physical port without some complex ebtables magic. This is in line with the notion that OpenWRT is the network go-to swiss army knife when you need a nice set-and-forget, low maintenance box to handle a specific task. Current builds of the ip-bridge package already fully support this feature so the only requirement is enabling the kernel config. This is disabled by default so existing bridge configurations will not be affected. This patch only gives the ability to turn it on with an 'ip link' command. If there is interest, I could look into making the feature accessible via uci configuration. It causes about 3.1% hit on raw bridging speed, which is relatively trivial considering that I had to use 300 byte packets to strain the CPU enough to notice a slowdown at all. The ER8 would chug along at wire speed otherwise, and that's using only one core. Since the typical bridge use case on OpenWRT is wireless, I doubt it would be noticeable at all. With BRIDGE_VLAN_FILTERING iperf -u -c 192.168.1.105 -b 1G -l 300 ------------------------------------------------------------ Client connecting to 192.168.1.105, UDP port 5001 Sending 300 byte datagrams, IPG target: 2.24 us (kalman adjust) UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.1.12 port 58045 connected with 192.168.1.105 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 977 MBytes 820 Mbits/sec [ 3] Sent 3414986 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 811 MBytes 680 Mbits/sec 0.000 ms 581210/3414986 (0%) Without BRIDGE_VLAN_FILTERING iperf -u -c 192.168.1.105 -b 1G -l 300 ------------------------------------------------------------ Client connecting to 192.168.1.105, UDP port 5001 Sending 300 byte datagrams, IPG target: 2.24 us (kalman adjust) UDP buffer size: 208 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.1.12 port 36645 connected with 192.168.1.105 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 977 MBytes 820 Mbits/sec [ 3] Sent 3414990 datagrams [ 3] Server Report: [ 3] 0.0-10.0 sec 836 MBytes 701 Mbits/sec 0.000 ms 493950/3414990 (0%) In terms of kernel size, it uses 16KB (6753K vs 6737K on ER8) so a 0.002% hit. The exact 16KB is probably just due to how the kernel is compressed. Suggested-by: Jonathan Thibault <jonathan@navigue.com> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: add CONFIG_CC_OPTIMIZE_FOR_* to the default configFelix Fietkau2018-10-151-0/+2
| | | | | | | Avoid repeating them in the target config, they are overwritten by top-level menuconfig anyway Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: enable memory compactionFelix Fietkau2018-10-091-1/+1
| | | | | | | | | | | Compaction is the only memory management component to form high order (larger physically contiguous) memory blocks reliably. The page allocator relies on compaction heavily and the lack of the feature can lead to unexpected OOM killer invocations for high order memory requests. You shouldn't disable this option unless there really is a strong reason for it. Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Michal Hrusecky <michal.hrusecky@nic.cz>
* kernel: support gcc-optimized inlining on all architecturesFelix Fietkau2018-10-091-0/+1
| | | | | | | | Optimized inlining was disabled by default when gcc 4 was still relatively new. By now, all gcc versions handle this well and there seems to be no real reason to keep it x86-only. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: Add missing config options for layerscape armv7 targetHauke Mehrtens2018-09-271-0/+4
| | | | | | | | This adds some configuration options which are selectable when the layerscape armv7 target is compiled. This was found by build bot. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: Add missing config options for samsung targetHauke Mehrtens2018-09-271-0/+4
| | | | | | | | This adds some configuration options which are selectable when the samsung target is compiled. This was found by build bot. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: add missing symbolJohn Crispin2018-09-101-0/+1
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* config: extend small_flash featureAlex Maclean2018-07-121-1/+1
| | | | | | | | | | Extend the small_flash feature to disable swap, core dumps, and kernel debug info, and change the squashfs block size to 1024KiB. Also change squashfs fragment cache to 2 for small_flash to ease memory usage. Signed-off-by: Alex Maclean <monkeh@monkeh.net>
* kernel: only optimized for size if small_flashMathias Kresin2018-07-121-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | Add a new config option to allow to select the default compile optimization level for the kernel. Select the optimization for size by default if the small_flash feature is set. Otherwise "Optimize for performance" is set. Add the small_flash feature flag to all (sub)targets which had the optimization for size in their default kernel config. Remove CC_OPTIMIZE_FOR_* symbols from all kernel configs to apply the new setting. Exceptions to the above are: - lantiq, where the optimization for size is only required for the xway_legacy subtarget but was set for the whole target - mediatek, ramips/mt7620 & ramips/mt76x8 where boards should have plenty of space and an optimization for size doesn't make much sense - rb532, which has 128MByte flash Signed-off-by: Mathias Kresin <dev@kresin.me>
* kernel: move CONFIG_USB_MTU3 to generic configHauke Mehrtens2018-07-071-0/+1
| | | | | | | | | | | CONFIG_USB_MTU3 is not visible for the mediatek target by default, but only when CONFIG_USB_GADGET is set. This will config option will be remove with when running "make kernel_oldconfig", move this option to the generic config to prevent this. This fixes the build of the mt7623 subtarget of the mediatek target. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: disable some DRM_PANEL config optionsHauke Mehrtens2018-07-071-0/+2
| | | | | | | The modules should not be build by default. This fixes the build of the zynq target. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: enable THIN_ARCHIVES by defaultSergey Ryazanov2018-05-221-0/+1
| | | | | | | | THIN_ARCHIVES option is enabled by default in the kernel configuration and no one target config disables it. So enable it by default and remove this symbol from target specific configs to keep them light. Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* kernel: enable FUTEX_PI by defaultSergey Ryazanov2018-05-221-0/+1
| | | | | | | | | New FUTEX_PI configuration symbol enabled if FUTEX and RT_MUTEX symbols are enabled. Both of these symbols are enabled by default in the generic config, so enable FUTEX_PI by default too to keep platform specific configs minimal. Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* kernel: enable EXPORTFS by defaultSergey Ryazanov2018-05-221-1/+1
| | | | | | | | OVERLAY_FS config symbol selects EXPORTFS since 4.12 kernel, we have OVERLAY_FS enabled by default, so enable EXPORTFS in the generic config of 4.14 and remove this option from platform specific configs. Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* kernel: disable DRM_LIB_RANDOM by defaultSergey Ryazanov2018-05-221-0/+1
| | | | | | | DRM_LIB_RANDOM config symbol selected only by DRM_DEBUG_MM_SELFTEST which is disable by default, so disable DRM_LIB_RANDOM by default too. Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* kernel: disable DMA_{NOOP|VIRT}_OPS by defaultSergey Ryazanov2018-05-221-0/+2
| | | | | | | These options do not used by any supported arch, so disable them by default to make arch configs a bit more clean. Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* kernel: disable ARCH_WANTS_THP_SWAP by defaultSergey Ryazanov2018-05-221-0/+1
| | | | | | | | Only one arch (x86_64) enables this option. So disable ARCH_WANTS_THP_SWAP by default and remove referencies to it from all configs (except x86_64) to make them clean. Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
* kernel: bump 4.14 to 4.14.41Koen Vandeputte2018-05-181-0/+1
| | | | | | | | | | | | | | | | | | | | | Refreshed all patches Dropped upstreamed patches: 522-PCI-aardvark-fix-logic-in-PCI-configuration-read-write-functions.patch 523-PCI-aardvark-set-PIO_ADDR_LS-correctly-in-advk_pcie_rd_conf.patch 525-PCI-aardvark-use-isr1-instead-of-isr0-interrupt-in-legacy-irq-mode.patch 527-PCI-aardvark-fix-PCIe-max-read-request-size-setting.patch updated patches: 524-PCI-aardvark-set-host-and-device-to-the-same-MAX-payload-size.patch 030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch Added new ARM64 symbol: CONFIG_ARM64_ERRATUM_1024718 Compile-tested on: cns3xxx, imx6, mvebu (arm64), x86_64 Runtime-tested on: cns3xxx, imx6, x86_64 Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* kernel: Restrict dmesg output to root.Rosen Penev2018-04-301-1/+1
| | | | | | | | In typical OpenWrt setups, there are no other users that have a shell spawned for them by default. This can be overriden by the kernel.dmesg_output syssctl. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* arm64: enable harden branch predictorMathias Kresin2018-04-271-2/+0
| | | | | | Enable the harden branch predictor for arm64 as it is recommend. Signed-off-by: Mathias Kresin <dev@kresin.me>
* kernel: add missing config optionHauke Mehrtens2018-03-301-0/+1
| | | | | | | | | CONFIG_NVMEM_BCM_OCOTP was added in kernel 4.10 and it is possible to activate it on the bcm53xx target. Deactivate it by default to fix the build of the bcm53xx target. This was found by build bot. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: generic: Add kernel configuration optionsHauke Mehrtens2018-03-021-1/+10
| | | | | | These options are needed for the mvebu arm64 target. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: generic: Move config option to genericHauke Mehrtens2018-03-021-0/+1
| | | | | | | This is deactivated in all targets using the DSA switch driver with kernel 4.14. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: generic: add 4.14 config optionHans Dedecker2018-02-261-0/+1
| | | | | | | | When CGROUPS is enabled the new option CONFIG_CGROUP_NET_CLASSID is selectable and not handled. Add this option to the 4.14 kernel configuration. Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* kernel: optimize for performance by default starting with 4.14Felix Fietkau2018-02-241-2/+2
| | | | | | Keep size optimizations for smaller targets that already switched Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: add missing symbolTim Harvey2018-02-221-0/+1
| | | | Signed-off-by: Tim Harvey <tharvey@gateworks.com>
* kernel: backport netfilter NAT offload support to 4.14Felix Fietkau2018-02-211-0/+2
| | | | | | | | | This only works with nftables for now, iptables support will be added later. Includes a number of related upstream nftables improvements to simplify backporting follow-up changes Signed-off-by: John Crispin <john@phrozen.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: add missing symbols for v4.14John Crispin2018-02-191-0/+2
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* kernel: add missing config symbolsStijn Tintel2018-02-181-0/+2
| | | | | | | | They were introduced for arm64 in 4.14.20. Fixes: 88ba41453dbc ("kernel: bump 4.14 to 4.14.20") Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* kernel: add missing symbolJohn Crispin2018-02-181-0/+1
| | | | | | this caused v4.14.20 based builds so fail on aarch64 Signed-off-by: John Crispin <john@phrozen.org>
* kernel: add missing symbolsJohn Crispin2018-02-161-0/+1
| | | | | | These cause mediatek arm to fail full builds Signed-off-by: John Crispin <john@phrozen.org>
* kernel: ubifs: create use file system format 4 by defaultHauke Mehrtens2018-02-131-0/+1
| | | | | | | | | | | | | | | | | | | Instead of creating an ubifs file system with format version 5 by default on empty UBI volumes use the older format 4 by default. This will make it possible to mount these file systems also on older kernel versions. When a user wants to do a sysupgrade from kernel 4.14 to kernel 4.9 the old kernel has to read the file system created by the more recent kernel which currently does not work for ubifs. This fixes the problem by creating file systems which are compatible with older kernel versions by default. Kernel 4.14 will still be able to read and write UBI FS file system version 5, it will just not be used when a ubifs partition is created implicitly on an empty UBI volume. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: Add missing config optionsHauke Mehrtens2018-02-131-0/+5
| | | | | | These were found when compiling the new octeontx target. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: add missing symbolJohn Crispin2018-02-131-0/+1
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* kernel: add missing symbol for v4.14John Crispin2018-02-131-0/+1
| | | | Signed-off-by: John Crispin <john@phrozen.org>