Skip to content

FS#867 - mvebu: Should be split different arches, current (Armada 370, XP and other "legacy") and 385+ #5801

Open

Description

@openwrt-bot

diizzyy:

The older SoCs such as Armada XP and 370 only supports vfpv3-d16 while 385 and newer does complete vfpv3 and neon. This hampers performance of newer SoCs quite a bit and makes little sense not to split these since we already build vfpv3+neon binaries. While neon-vfpv4 exists, neon-vfpv3 doesn't and for some reason it's just called neon in GCC (which translates to arm_cortex-a9_neon in LEDE for this SoC family). Source: https://lists.linaro.org/pipermail/linaro-toolchain/2016-July/005826.html

Activity

  1. openwrt-bot commented on Jun 25, 2017

    @openwrt-bot
    Author

    anomeome:

    Limiting to lowest common [[https://forum.lede-project.org/t/new-package-arch-for-mvebu/4235|denominator]] to reduce target count appears to be a significant penalty for the majority of mvebu targets.

  2. openwrt-bot commented on May 21, 2020

    @openwrt-bot
    Author

    FrederickZh:

    brand model target subtarget packagearchitecture cpu FPU/SIMD
    Globalscale Mirabox mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell 88F6707 VFPv3-D16/?
    Marvell RD-A370-A1 mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 370 VFPv3-D16/?
    SolidRun ClearFog Pro mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 388 88F6828 VFPv3-D32/NEON
    SolidRun ClearFog Base mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 388 88F6828 VFPv3-D32/NEON
    Linksys WRT1200AC mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 385 88F6820 VFPv3-D32/NEON
    Linksys WRT1900AC v2 mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 385 88F6820 VFPv3-D32/NEON
    Linksys WRT1900ACS mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 385 88F6820 VFPv3-D32/NEON
    Linksys WRT3200ACM mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 385 88F6820 VFPv3-D32/NEON
    Turris CZ.NIC Omnia mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 385 88F6820 VFPv3-D32/NEON
    Linksys WRT32X mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 385 88F6820 VFPv3-D32/NEON
    Marvell Armada A385 DB AP mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada 385 88F6820 VFPv3-D32/NEON
    Marvell Armada A370 DB mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada A370 VFPv3-D16/?
    Linksys WRT1900AC v1 mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada XP MV78230 VFPv3-D16/?
    PlatHome OpenBlocks AX3-4 mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada XP MV78260 VFPv3-D16/?

    I just downloaded a copy of the supported devices CSV. There are currently only 5 vfp3-d16 devices, among which RD-A370-A1 and Armada A370 DB are reference boards and WRT1900AC has got a v2 that according to OpenWRT DB was released in the same year (2018). So I reckon it's reasonable to even drop vfp3-d16 if the number of officially built architectures is a concern (sorry PlatHome and Globalscale guys).

  3. trinitronx commented on Oct 27, 2025

    @trinitronx

    Linksys WRT1900AC v1 mvebu cortexa9 arm_cortex-a9_vfpv3 Marvell Armada XP MV78230 VFPv3-D16/?

    The WRT1900AC v1 (mamba) has a Marvell Armada XP MV78230. The Marvell Armada XP family datasheet says it has a VFPv3-D32 Vector Floating Point Unit. So that means no NEON, and also supports 32x 64-bit FPU registers (vfpd32 CPU feature).

    🤔 However, the MV78230 device-specific datasheet here states:

    Two Dual-Issue ARMv7-Compliant CPU
    • Up to 1.6 GHz
    • Superscalar RISC CPU with Harvard architecture
    issues two instructions per cycle
    • Single/double precision Floating Point Unit
    (VFP3-16) IEEE 754 compliant per core1

    Meanwhile, the Armada XP family datasheet states:

    1 Product Overview

    The ARMADA® XP Family of Highly Integrated Multi-Core ARMv7 Based SoC Processors are a
    complete system-on-chip solution based on the Marvell ® Core Processor embedded CPU
    technology. By leveraging the successful Marvell system controllers and extensive expertise in ARM
    instruction-set-compliant CPUs, the ARMADA ® XP SoCs present a new level of performance,
    integration, and efficiency to raise the performance/power and performance/cost bar.
    These devices integrate:

    • Dual/quad Superscalar, ARMv7-compliant Marvell ® Core Processors with the latest Marvell
      micro-architecture enhancements, with a double precision IEEE-754-compliant Floating Point
      Unit (FPU) per core.
    • Shared Level-2 (L2) cache in a size of 1 MB or 2 MB.
    • Low-latency, high-bandwidth tightly coupled DDR3 memory controller.

    [...SNIP...]

    2 Functional Overview

    The following sections describe the functional blocks and features of the ARMADA® XP.

    2.1 Marvell ® Core Processor

    The ARMADA® XP devices are based on the dual-issue, Marvell ® Core Processor CPU.
    This ARMv7-MP - compliant core supports the following features:

    • 2.6 DMIPS/MHz per core
    • Superscalar RISC CPU with Harvard architecture that issues two instructions per cycle
    • Single/double precision IEEE-754-compliant Floating Point Unit (VFP3-D32)
    • Compliant with ARMv7-A architecture, published in the ARM Architecture Reference Manual,
      Second Edition
    • Supports 32-bit instruction set for performance and flexibility

    [...SNIP...]

    Yet, if we trust /proc/cpuinfo, then it has vfpd32 CPU feature... 🤔

    Expand for /proc/cpuinfo details

    # cat /proc/cpuinfo 
    processor	: 0
    model name	: ARMv7 Processor rev 2 (v7l)
    BogoMIPS	: 25.00
    Features	: half thumb fastmult vfp edsp vfpv3 tls idiva idivt vfpd32 lpae 
    CPU implementer	: 0x56
    CPU architecture: 7
    CPU variant	: 0x2
    CPU part	: 0x584
    CPU revision	: 2
    
    processor	: 1
    model name	: ARMv7 Processor rev 2 (v7l)
    BogoMIPS	: 25.00
    Features	: half thumb fastmult vfp edsp vfpv3 tls idiva idivt vfpd32 lpae 
    CPU implementer	: 0x56
    CPU architecture: 7
    CPU variant	: 0x2
    CPU part	: 0x584
    CPU revision	: 2
    
    Hardware	: Marvell Armada 370/XP (Device Tree)
    Revision	: 0000
    Serial		: 0000000000000000

    # cat  /sys/firmware/devicetree/base/compatible ; echo ''
    linksys,wrt1900ac-v1linksys,mambamarvell,armadaxp-mv78230marvell,armadaxpmarvell,armada-370-xp

    Footnotes

    1. ... So perhaps it does only support VFPv3-d16 after all? Or maybe it does have vfpd32 as per CPU features? 🤷 Which can we trust? ↩

  4. nicefile commented on Nov 13, 2025

    @nicefile

    @trinitronx This was on the table multiple times. Since platform is dated I would leave out those vfp3-d16 alone and move 375 & 38x to 'NEON' as we already build 'NEON' packages via 'imx' platform. This got as far as PR/3079 go then died there ;(

  5. Neustradamus commented on Jan 2, 2026

    @Neustradamus

    Linked to:

    Marvell 88F6707 (Armada 370) linked PRs:

    Marvell Armada 88F6707 (Armada 370) linked commits:

    • mvebu: add support for Buffalo LinkStation LS421DE: 85ef69b
    • mvebu: cortexa9: Add support for Ctera C200-V2: 9149ed4
    • mvebu: add support for Buffalo LinkStation LS220DE: be0f1c1
    • mvebu: add support for Synology DS213j: 3f7637b

    Two D-Link NAS:

    • DNS-327L (Marvell 88F6707 C120 @ 1.2 GHz) / Marvell Armada 370
    • DNS-340L (Marvell 88F6707 C120 @ 1.2 GHz) / Marvell Armada 370
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions