On 27/07/2026 16:42, Shrikanth Hegde wrote:
Hi Yury,

On 7/25/26 2:35 AM, Yury Norov wrote:


In v8 I pointed to the identical function in s390 code, and you agreed
to unify them, but that didn't happen. Please do that in the next
version.


This is diff i have now. I assume this is what you had suggested.
Let me know if it differs.


The chunk below for s390 looks correct to me. I don't see any
difference functionality wise.


diff --git a/arch/s390/kernel/hiperdispatch.c b/arch/s390/kernel/ hiperdispatch.c
index 217206522266..0c658f229b17 100644
--- a/arch/s390/kernel/hiperdispatch.c
+++ b/arch/s390/kernel/hiperdispatch.c
@@ -210,13 +210,10 @@ static unsigned long hd_calculate_steal_percentage(void)
         int cpus, cpu;
         ktime_t now;

-       cpus = 0;
-       steal = 0;
         percentage = 0;
-       for_each_cpu(cpu, &hd_vmvl_cpumask) {
-               steal += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL];
-               cpus++;
-       }
+       steal = kcpustat_field_total(CPUTIME_STEAL, &hd_vmvl_cpumask);
+       cpus = cpumask_weight(&hd_vmvl_cpumask);
+

[..snip..]

--- a/include/linux/kernel_stat.h
+++ b/include/linux/kernel_stat.h
@@ -196,6 +196,17 @@ static inline void kcpustat_cpu_fetch(struct kernel_cpustat *dst, int cpu)
  }
  #endif /* !CONFIG_VIRT_CPU_ACCOUNTING_GEN */

+static inline u64 kcpustat_field_total(enum cpu_usage_stat usage, const struct cpumask *cpus)
+{
+       u64 total = 0;
+       int cpu;
+
+       for_each_cpu(cpu, cpus)
+               total += kcpustat_field(usage, cpu);
+
+       return total;
+}
+



Reply via email to