• Dragan Simic's avatar
    arm64: dts: rockchip: Add cache information to the SoC dtsi for RK356x · 8612169a
    Dragan Simic authored
    Add missing cache information to the Rockchip RK356x SoC dtsi, to allow
    the userspace, which includes lscpu(1) that uses the virtual files provided
    by the kernel under the /sys/devices/system/cpu directory, to display the
    proper RK3566 and RK3568 cache information.
    
    Adding the cache information to the RK356x SoC dtsi also makes the following
    warning message in the kernel log go away:
    
      cacheinfo: Unable to detect cache hierarchy for CPU 0
    
    The cache parameters for the RK356x dtsi were obtained and partially derived
    by hand from the cache size and layout specifications found in the following
    datasheets and technical reference manuals:
    
      - Rockchip RK3566 datasheet, version 1.1
      - Rockchip RK3568 datasheet, version 1.3
      - ARM Cortex-A55 revision r1p0 TRM, version 0100-00
      - ARM DynamIQ Shared Unit revision r4p0 TRM, version 0400-02
    
    For future reference, here's a rather detailed summary of the documentation,
    which applies to both Rockchip RK3566 and RK3568 SoCs:
    
      - All caches employ the 64-byte cache line length
      - Each Cortex-A55 core has 32 KB of L1 4-way, set-associative instruction
        cache and 32 KB of L1 4-way, set-associative data cache
      - There are no L2 caches, which are per-core and private in Cortex-A55,
        because it belongs to the ARM DynamIQ IP core lineup
      - The entire SoC has 512 KB of unified L3 16-way, set-associative cache,
        which is shared among all four Cortex-A55 CPU cores
      - Cortex-A55 cores can be configured without private per-core L2 caches,
        in which case the shared L3 cache appears to them as an L2 cache;  this
        is the case for the RK356x SoCs, so let's use "cache-level = <2>" to
        prevent the "huh, no L2 caches, but an L3 cache?" confusion among the
        users viewing the data presented to the userspace;  another option could
        be to have additional 0 KB L2 caches defined, which may be technically
        correct, but would probably be even more confusing
    Helped-by: default avatarAnand Moon <linux.amoon@gmail.com>
    Tested-By: default avatarDiederik de Haas <didi.debian@cknow.org>
    Reviewed-by: default avatarAnand Moon <linux.amoon@gmail.com>
    Signed-off-by: default avatarDragan Simic <dsimic@manjaro.org>
    Link: https://lore.kernel.org/r/2dee6dad8460b0c5f3b5da53cf55f735840efef1.1709957777.git.dsimic@manjaro.orgSigned-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
    8612169a
rk356x.dtsi 50.7 KB