Message ID | 20200226002356.86986-1-gshan@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | arm64: Dereference CPU operations indirectly | expand |
On 2/26/20 11:23 AM, Gavin Shan wrote: > The subject perhaps can't precisely indicate what this series does, but > keep it same as before for consistency. > > In current implementation, an array (@cpu_ops[NR_CPUS]) is maintained > to dereference the CPU operations. 2KB memory are consumed when NR_CPUS > is configured to 256. It's too much than what I expected. This series > reworks the implementation to dereference the CPU operations by using > a CPU operations pointer with assumption - all CPUs should have unified > CPU operations. With this, 8-bytes memory will be used for same purpose. > > PATCH[1/5] isn't too much relevant, to declare ACPI parking protocol only > when CONFIG_ARM64_ACPI_PARKING_PROTOCOL has been enabled. PATCH[2/5] > renames cpu_read_ops() to init_cpu_ops(), which is obviously more precise > because it's initializing the CPU operations. PATCH[3/5] introduces > get_cpu_ops(), preparing for droping the array of CPU operations. > PATCH[4/5] removes the CPU operations deferencing array and replaces it > with a pointer with the assumption: all CPUs should have same enablement > method. PATCH[5/5] removes the cpu argument of get_cpu_ops() as it's not > used any more. > Lorenzo, kindly ping... > Changelog > ========= > v4: > * Rebase to 5.6.rc3 and retest (Gavin Shan) > * Improved commit log for PATCH[4/5] with link tag (Lorenzo Pieralisi) > * Using pointer instead of index to dereference the > unified CPU operations (Lorenzo Pieralisi) > * Merge logic of cpu_get_ops() to get_cpu_method() (Gavin Shan) > v3: > * Assume all CPUs have same enablement method. With this, the used > memory is further squeezed from 64 bytes to 4 bytes (Lorenzo Pieralisi) > * Add PATCH[5/5] to remove argument of get_cpu_ops() (Gavin Shan) > v2: > * Pack 4 CPUs' indexes into one byte. 64 bytes are consumed in order > to get the CPU operations (Robin Murphy) > * Use ARRAY_SIZE() to iterate @cpu_ops[] (Robin Murphy) > * Make index-0 valid (Robin Murphy) > > Gavin Shan (5): > arm64: Declare ACPI parking protocol CPU operation if needed > arm64: Rename cpu_read_ops() to init_cpu_ops() > arm64: Introduce get_cpu_ops() helper function > arm64: Remove CPU operations dereferencing array > arm64: Remove argument @cpu of get_cpu_ops() > > arch/arm64/include/asm/cpu_ops.h | 8 ++-- > arch/arm64/kernel/cpu_ops.c | 77 ++++++++++++++++---------------- > arch/arm64/kernel/cpuidle.c | 10 ++--- > arch/arm64/kernel/setup.c | 8 ++-- > arch/arm64/kernel/smp.c | 60 ++++++++++++++++--------- > 5 files changed, 93 insertions(+), 70 deletions(-) >