• Christophe JAILLET's avatar
    cpufreq: tegra186: Use flexible array to simplify memory allocation · 32eb6453
    Christophe JAILLET authored
    Use flexible array to simplify memory allocation.
    It saves some memory, avoids an indirection when reading the 'clusters'
    array and removes some LoC.
    
    Detailed explanation:
    ====================
    Knowing that:
      - each devm_ allocation over-allocates 40 bytes for internal needs
      - Some rounding is done by the memory allocator on 8, 16, 32, 64, 96,
        128, 192, 256, 512, 1024, 2048, 4096, 8192 boundaries
    
    and that:
      - sizeof(struct tegra186_cpufreq_data) = 24
      - sizeof(struct tegra186_cpufreq_cluster) = 16
    
    Memory allocations in tegra186_cpufreq_probe() are:
      data:           (24 + 40) = 64 		      => 64 bytes
      data->clusters: (2 * 16 + 40) = 72     => 96 bytes
    So a total of 160 bytes are allocated.
    56 for the real need, 80 for internal uses and 24 are wasted.
    
    If 'struct tegra186_cpufreq_data' is reordered so that 'clusters' is a
    flexible array:
      - it saves one pointer in the structure
      - only one allocation is needed
    
    So, only 96 bytes are allocated:
      16 + 2 * 16 + 40 = 88  => 96 bytes
    Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    32eb6453
tegra186-cpufreq.c 6.91 KB