aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* malta: Refresh kernel 4.14 configurationHauke Mehrtens2019-01-133-5/+38
| | | | Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: MIPS: Add CPU option reporting to /proc/cpuinfoHauke Mehrtens2019-01-133-0/+416
| | | | | | | | | | | Many MIPS CPUs have optional CPU features which are not activates for all CPU cores. Print the CPU options which are implemented in the core in /proc/cpuinfo. This makes it possible to see what features are supported and which are not supported. This should cover all standard MIPS extensions, before it only printed information about the main MIPS ASEs. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel/modules: Fix build of kmod-pmbusHauke Mehrtens2019-01-132-2/+2
| | | | | | | | This fixes two build problems introduced with the recently added new kernel module package. Fixes: ed2839ac4190 ("kernel/modules: add kmod-pmbus-zl6100 module") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* generic: ar8216: ar8327: kill warningsChuanhong Guo2019-01-131-3/+3
| | | | | | This fixed warnings caused by returning value in a void function Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
* mpc85xx: add support for Sophos RED 15w Rev.1David Bauer2019-01-1314-3/+419
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hardware ======== CPU: Freescale P1010 PowerPC RAM: 128M DDR3 NAND: 128MiB ETH: RTL8211F SGMII PHY RTL8367B 5-port RGMII switch (not connected to SoC - unmanaged) WiFi: SparkLan WPEA-121N - Atheros AR9382 2T2R abgn USB: 1x USB 2.0 LED: System, Router, Internet, Tunnel controllable LAN1-4, WAN, Power non-controllable BTN: None Installation ============ 1. Power on the device while attached to the Console port. 2. Halt the U-Boot by pressing Enter when prompted. 3. Set the correct bootcmd for booting OpenWRT: > setenv bootargs_owrt "setenv bootargs console=ttyS0,115200" > setenv bootcmd "run bootargs_owrt; nand read 0x1000000 0x300000 0x800000; bootm 0x1000000;" > saveenv 5. Rename OpenWRT initramfs image to 'kernel.bin' and place it in a TFTP server root-directory served on 192.168.1.2/24. Connect your computer to one of the LAN-ports. 4. Boot OpenWRT initramfs image with > run bootargs_owrt; tftpboot 0x1000000 192.168.1.2:kernel.bin; bootm 0x1000000; 6. (Optional) Make a Backup of 'sophos-os1', 'sophos-os2' and 'sophos-data' in case you ever want to go back to the vendor firmware. 7. Create Ubi Volume on mtd4 by executing > ubiformat /dev/mtd4 -y 8. Transfer OpenWRT sysupgrade image to the device via SCP and install it with > sysupgrade -n <openwrt-image-file> Back to Stock ============= If you want to go back to the stock firmware, here is the bootcmd of the vendor firmware: > setenv bootargs console=ttyS0,115200 root=/dev/mtdblock5; nand read 0xc00000 0x00300000 0x100000; nand read 0x1000000 0x00400000 0x00800000; bootm 0x1000000 - 0xc00000 Set it via 'setenv' from the U-Boot shell and don't forget to save it using 'saveenv'! After this, boot the OpenWRT initramfs image just like you would for installation. Write back the three vendor partitions using mtd. Reboot the device afterwards. Signed-off-by: David Bauer <mail@david-bauer.net> [refresh and reorder patches] Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: 4.14: sync configChristian Lamparter2019-01-131-2/+1
| | | | | | | This patch syncs the 4.14 kernel config to the current generic configuration. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* mpc85xx: disable initramfs image in TL-WDR4900Pawel Dembicki2019-01-131-0/+1
| | | | | | | | | | Initramfs image isn't required for this device and regular initramfs generation isn't work properly. It create not working binaries. This patch disable initramfs image for TL-WDR4900. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* mpc85xx: add support for Freescale (NXP) P2020RDBPawel Dembicki2019-01-137-1/+411
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit add initial support for Freescale (NXP) P2020RDB Hardware: SoC: P2020 2x1GHz DRAM: 512-1GB DDR3 2 + 4 GBE (2 separate ports and four in VSC7385) Flash: 16MB NOR, 32MB NAND, 16MB SPI-NOR PCIE x1 and mPCIE x1 SD Reader Interfaces: GBE RJ45 x6 USB2.0 x1 UART x2 I2C x2 JTAG x1 SD x1 PCIE x2 (PCIE and mPCIE) Flash instructions: Place sysupgrade image to 0x80000 address in NOR. Eg. (no brakelines in setenv command): setenv 'firmware_flash tftpboot $loadaddr $firmwarefile; protect off $norfdtaddr +$filesize; erase $norfdtaddr +$filesize; cp.b $loadaddr $norfdtaddr $filesize; protect on $norfdtaddr +$filesize; cmp.b $loadaddr $norfdtaddr $filesize' setenv firmwarefile firmware.bin run firmware_flash Boot (no brakeline in setenv command): setenv bootcmd 'setenv bootargs root=/dev/mtdblock3 rw console=$consoledev, $baudrate rootfstype=squashfs $othbootargs; bootm $norfdtaddr' saveenv boot Known issues: -Switch is unmanaged (VSC 7385 is connected via eLBC, driver uses SPI) -No SD reader support Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [refreshed patches]
* kernel/modules: add kmod-pmbus-zl6100 modulePawel Dembicki2019-01-135-0/+86
| | | | | | | | | | | | 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: Add support for kernel 4.19Hauke Mehrtens2019-01-129-0/+1847
| | | | | | | | | | | | This adds initial support for kernel 4.19 to the x86 target. The patches and the kernel configurations were copied from kernel 4.14 and then refreshed. The legacy and the genode target will not support PAE any more because they use a CPU type which does not support PAE, the generic sub target still supports PAE. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* x86: Refresh kernel 4.14 configurationHauke Mehrtens2019-01-126-26/+12
| | | | | | | | | | | | 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>
* x86: Use kernel specific subtarget configurationsHauke Mehrtens2019-01-124-0/+0
| | | | | | | | | | This makes it possible to use different sub target configurations for kernel 4.19 for example. To support kernel 4.9 and kernel 4.14 with the same configuration file already needed some extra work this will not be needed for kernel 4.19 any more. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* gdb: The signal definitions of musl and gdb collideHauke Mehrtens2019-01-121-0/+44
| | | | | | | | | | | | | | This fixes compilation of gdb on arm64. The kernel defines "struct sigcontext" in asm/sigcontext.h and musl libc defines it in signal.h, which collides. Kernel 4.14 misses the definitions of struct user_sve_header so we still have to use the aarch64-sve-linux-sigcontext.h header file which also provides that and make sure aarch64-sve-linux-sigcontext.h does not provide the same headers as the kernel or musl. Fixes: FS#2040 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* bzip2: fix hardening buildHauke Mehrtens2019-01-121-4/+4
| | | | | | | Set the LDFLAGS otherwise it will not get the target hardening flags or any other generic flags provided in the LDFLAGS Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* tools/firmware-utils: fix sysupgrade typo in mkdapimg2Hans Dedecker2019-01-121-1/+1
| | | | Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* tools/firmware-utils: fix sysupgrade typo in mkdapimgHans Dedecker2019-01-121-1/+1
| | | | Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* octeon: fix typo in platform.shHans Dedecker2019-01-121-1/+1
| | | | | | Fix upgrade typo Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* cryptodev-linux: Update to 1.10Daniel Engberg2019-01-121-6/+5
| | | | | | | Update cryptodev-linux to 1.10 Switch from git to codeload generated tarball Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
* mt76: fix typo in version numberFelix Fietkau2019-01-111-2/+2
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* mt76: update to the latest versionFelix Fietkau2019-01-111-3/+3
| | | | | | | | | | | | | | | | | | | | | 58988a3 mt76: fix signedness of rx status signal field bce700d mt7603: fix signal strength reporting on single-stream devices 148219d mt7603: fix checkpatch issues 2a092e2 mt7603: fix per-rate retry accounting 962152b mt7603: fix WMM TXOP limit configuration 24ec040 mt7603: fix BSSID configuration in AP mode 48fb011 mt7603: fix CF-End transmit rate when 11b stations are connected 9daa5ff mt76: make const array 'data' static, shrinks object size 7d4a95c mt76: dma: avoid indirect call in mt76_dma_tx_queue_skb f84b008 mt76: fix tx status reporting for non-probing frames 8167074 Revert "mt7603: update firmware to 20161027164355" 2ad54b2 mt76: move wcid rssi ewma init to mt76 core d77c861 mt76: fix rssi ewma tracking eca96cd mt76: use proper name for __MT76x02_H macro d1bc504 mt76: fix building without CONFIG_LEDS_CLASS a946b78 mt76: add led support to mt76x0e driver Signed-off-by: Felix Fietkau <nbd@nbd.name>
* odhcp6c: update to latest git HEADHans Dedecker2019-01-111-3/+3
| | | | | | | | | | d2e247d odhcp6c: align further with RFC8415 ce83a23 dhcpv6: avoid parsing unncessary IAs b079733 dhcpv6: set cnt to correct IOV enum 41494da dhcpv6: get rid of request_prefix f7437e4 dhcpv6: sanitize option request list Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* kernel: add bcma fix for subdevices DMA parametersRafał Miłecki2019-01-112-10/+80
| | | | | | This fixes bgmac DMA allocations with kernel 4.19. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* kernel: backport bcma patches that improve printing functionsRafał Miłecki2019-01-105-1/+471
| | | | | | | Updated printing functions use dev_* helpers to provide more meaningful messages. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* samba36: add package with hotplug.d script for auto sharingRafał Miłecki2019-01-102-0/+68
| | | | | | | | | | | | | | | The new samba36-hotplug package provides a hotplug.d script for the "mount" subsystem. It automatically shares every mounted block device. It works by updating /var/run/config/samba file which: 1) Is read by procd init script 2) Gets wiped on reboot providing a consistent state 3) Can be safely updated without flash wearing or conflicting with user changes being made in /etc/config/samba Cc: Rosy Song <rosysong@rosinson.com> Cc: Jo-Philipp Wich <jo@mein.io> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* samba36: append config from /var/run/config/ for runtime sharesRafał Miłecki2019-01-101-0/+2
| | | | | | | | | | | | | | | | | | | This will allow automation/hotplug.d scripts to store runtime shares in the /var/run/config/samba. It's useful e.g. for USB drives that user wants to be automatically shared. Using /var/run/config/ provides: 1) Automated cleaning on reboots It's important for consistency (to avoid sharing non-existing drives) 2) Safety for user non-commited changes Automated scripts should never call "uci [foo] commit" as that could flush incomplete config. Another minor gain is avoiding flash wearing for runtime setup. Cc: Rosy Song <rosysong@rosinson.com> Cc: Jo-Philipp Wich <jo@mein.io> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* brcm47xx: backport MIPS fix adding struct device for the SoCRafał Miłecki2019-01-102-2/+140
| | | | | | | | | | | It's needed to: 1) Fix GPIOLIB_IRQCHIP as in 4.19 there is no bcma revert anymore 2) Fix /sys/devices/ 3) Fix dma_zalloc_coherent() regression It still needs a bcma change that will follow later. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* brcm47xx: backport a final/accepted Netgear WNDR3400v3 patchRafał Miłecki2019-01-102-4/+22
| | | | Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* mac80211: brcmfmac: backport fixes from the 5.0-rc1Rafał Miłecki2019-01-083-0/+229
| | | | | | | | | This fixes: 1) Getting STA info with newer firmwares 2) Getting DMI / UEFI / OF data 3) Possible memory corruption in firmware loading code Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* mac80211: brcmfmac: trivial patches rename to use v5.0Rafał Miłecki2019-01-0810-0/+0
| | | | | | This matches Linus releasing 5.0-rc1 in place of 4.21-rc1. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* bison: update to 3.2.4Egor Mikhaylov2019-01-071-2/+2
| | | | Signed-off-by: Egor Mikhaylov <nagakamira@gmail.com>
* mac80211: brcmfmac: fix use-after-free & possible NULL pointer dereferenceRafał Miłecki2019-01-071-3/+2
| | | | | | | | | | 1) Using fwctx variable after brcmf_fw_request_done() was executed meant accessing freed memory. 2) Using fwctx->completion for the wait_for_completion_timeout() call could reuslt in NULL pointer dereference on fw loading error or if brcmf_fw_request_done() was executed quickly enough. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* cns3xxx: use actual size reads for PCIeKoen Vandeputte2019-01-072-0/+102
| | | | | | | | | | | | | | | | | | | upstream commit 802b7c06adc7 ("ARM: cns3xxx: Convert PCI to use generic config accessors") reimplemented cns3xxx_pci_read_config() using pci_generic_config_read32(), which preserved the property of only doing 32-bit reads. It also replaced cns3xxx_pci_write_config() with pci_generic_config_write(), so it changed writes from always being 32 bits to being the actual size, which works just fine. Due to: - The documentation does not mention that only 32 bit access is allowed. - Writes are already executed using the actual size - Extensive testing shows that 8b, 16b and 32b reads work as intended It makes perfectly sense to also swap 32 bit reading in favor of actual size. Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* gdb: bump to 8.2.1Koen Vandeputte2019-01-071-2/+2
| | | | | | | | | | | | | | | | PR build/23516 (gdb build error under msys+mingw: strip can't handle gdb-add-index.exe) PR build/23623 (install-strip fails) PR rust/23626 (gdb crashes in upstream rust nil-enum test) PR rust/23650 (rust field name access error mentions "foo") PR gdb/23663 (gdb 8.1.1: undefined rpl_stat function with musl toolchains) PR python/23669 (gdb.execute("show commands") doesn't work) PR python/23714 (Command repetition stops working after gdb.execute) PR gdb/23838 (8.2 regression for invalid -data-directory) PR gdb/23974 ("info os" crash when specifying invalid object) PR gdb/23999 (SYMBOL_LANGUAGE assertion failure on AIX) PR gdb/24003 (Error when binary searching CUs for a specific DIE when using DWZ) Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* toolchain/gdb: bump to 8.2.1Koen Vandeputte2019-01-071-2/+2
| | | | | | | | | | | | | | | | PR build/23516 (gdb build error under msys+mingw: strip can't handle gdb-add-index.exe) PR build/23623 (install-strip fails) PR rust/23626 (gdb crashes in upstream rust nil-enum test) PR rust/23650 (rust field name access error mentions "foo") PR gdb/23663 (gdb 8.1.1: undefined rpl_stat function with musl toolchains) PR python/23669 (gdb.execute("show commands") doesn't work) PR python/23714 (Command repetition stops working after gdb.execute) PR gdb/23838 (8.2 regression for invalid -data-directory) PR gdb/23974 ("info os" crash when specifying invalid object) PR gdb/23999 (SYMBOL_LANGUAGE assertion failure on AIX) PR gdb/24003 (Error when binary searching CUs for a specific DIE when using DWZ) Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* kernel: bump 4.14 to 4.14.91Koen Vandeputte2019-01-0713-113/+24
| | | | | | | | | | | | Refreshed all patches. Removed upstreamed: - 500-ubifs-Handle-re-linking-of-inodes-correctly-while-re.patch Compile-tested on: ar71xx, cns3xxx, imx6 Runtime-tested on: ar71xx, cns3xxx, imx6 Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* kernel: bump 4.9 to 4.9.148Koen Vandeputte2019-01-075-58/+10
| | | | | | | | | | | | | | | Refreshed all patches. Altered patches: - 902-debloat_proc.patch Removed upstreamed: - 424-v4.20-net-dsa-fix-88e6060-roaming.patch Compile-tested on: ar7 Runtime-tested on: none Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* kernel: bump 3.18 to 3.18.131Koen Vandeputte2019-01-073-8/+9
| | | | | | | | | | | | Refreshed all patches. Altered patches: - 902-debloat_proc.patch Compile-tested on: adm5120 Runtime-tested on: none Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
* ramips: whitespace cleanup inside hnat driverJohn Crispin2019-01-071-6/+8
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* ramips: add two-way hashing scheme for MT7621HsiuWen Yen2019-01-071-0/+11
| | | | | | | | | | Sometimes the tuples might be hashed to the same FOE entry. When this hash collision problem occurs, some of the connections will not be bound and consequently the CPU idle rate cannot reach 100%. Therefore, two-way hashing is adopted to alleviate this problem. Signed-off-by: HsiuWen Yen <y.hsiuwen@gmail.com>
* glibc: update to latest 2.27 commit (BZ #24018)Hans Dedecker2019-01-071-2/+2
| | | | | | | 68c2930a56 NEWS: add entries for bugs 23275, 23861, and 23907 766e8fb932 intl: Do not return NULL on asprintf failure in gettext [BZ #24018] Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* mac80211: add ABI_VERSION to fix rebuild of dependent packages after upgradesFelix Fietkau2019-01-061-0/+2
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* ipq40xx: copy Fritz4040 UBoot to STAGING_DIR_IMAGEDavid Bauer2019-01-062-3/+9
| | | | | | | | | | | | Copy U-Boot to STAGING_DIR_IMAGE (and append it to the EVA-image from there) to fix image generation using the image-builder. Also remove the bootloader from DEVICE_PACKAGES and instead use the BUILD_DEVICES directive from within the U-Boot makefile. This fixes eva-image generation using the OpenWRT image-builder. Signed-off-by: David Bauer <mail@david-bauer.net>
* mpc85xx: 4.19: refresh kernel configChristian Lamparter2019-01-051-67/+29
| | | | | | | This patch syncs the 4.19 kernel config to the current generic configuration. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* mpc85xx: 4.14: refresh kernel configChristian Lamparter2019-01-051-19/+24
| | | | | | | This patch syncs the 4.14 kernel config to the current generic configuration. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* ipq40xx: 4.14: Sync kernel configRobert Marko2019-01-051-0/+2
| | | | | | | | This patch syncs the 4.14 kernel config to the current generic configuration. Signed-off-by: Robert Marko <robimarko@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [reworded commit]
* ipq40xx: 4.19: Sync kernel configRobert Marko2019-01-051-7/+0
| | | | | | | | | This patch syncs the 4.19 kernel config since the KERNEL_STACKPROTECTOR and compiler options are now part of the 4.19 generic config. Signed-off-by: Robert Marko <robimarko@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [reworded commit]
* ipq40xx: fix 4.14 ImageBuilder build woesChristian Lamparter2019-01-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | Robert Marko reported an issue with the current imagebuilder images: "Imagebuilder includes the new kmod-usb-dwc3-qcom USB driver package by default even on 4.14. [...] the current state imagebuilder can't build images under 4.14 at all as the kmod-usb-dwc3-qcom does not exist in it so it throws and error and exits." This patch reverts the Makefile to just kmod-usb-dwc3-of-simple and once the switch to 4.19 is done. It also removes the kmod-usb-phy-qcom-dwc3 as they only contain the usb-phy drivers for the ipq806x generation. Dynamic switching based on the KERNEL_PATCHVER is possible by using: $(if $(filter 4.14,$(KERNEL_PATCHVER)),kmod-usb-dwc3-of-simple,kmod-usb-dwc3-qcom) though it Fixes: 13321fa1429 ("ipq40xx: Use kmod-usb-dwc3-qcom by default") Fixes: 6e58fb2c33e ("ipq40xx: kmod-usb-dwc3-of-simple vs kmod-usb-dwc3-qcom") Reported-by: Robert Marko <robimarko@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* apm821xx: MBL: fix kernel/apollo3g.dtb artifact buildChristian Lamparter2019-01-051-1/+1
| | | | | | | | The name for the artifact should have been apollo3g.dtb and not kernel.dtb. Fixes: 908bdbfce9f9 ("apm821xx: utilize build ARTIFACTs") Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* mpc85xx: add kernel 4.19 supportPawel Dembicki2019-01-055-0/+526
| | | | | | | | | | | | | | | Copied config from 4.14 Add patches for 4.19 Drop patch 103-powerpc-fix-build-cross32ar.patch, because issue was fixed in upstream. Compiled: generic p1020 Compiled and tested: (unofficial) P2020, TP-Link TL-WDR4900 Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [reworded commit]
* kernel: 4.19: kmod-ptp-gianfar follow upstream changesPawel Dembicki2019-01-051-1/+17
| | | | | | | | | | This patch deprecates the kmod-ptp-gianfar package and introduces kmod-ptp-qoriq for 4.19+ in its place. This has become necessary due to the linux kernel commit ceefc71d4c05 ("ptp: rework gianfar_ptp as QorIQ common PTP driver") Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [reworded commit]