From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 08:20:59 +0000 Subject: [PATCH] kernel_5.10 no rt --- kernel/arch/s390/kernel/vtime.c | 51 ++++++++++++++++++--------------------------------- 1 files changed, 18 insertions(+), 33 deletions(-) diff --git a/kernel/arch/s390/kernel/vtime.c b/kernel/arch/s390/kernel/vtime.c index 9b3c597..579ec3a 100644 --- a/kernel/arch/s390/kernel/vtime.c +++ b/kernel/arch/s390/kernel/vtime.c @@ -223,49 +223,34 @@ S390_lowcore.avg_steal_timer = avg_steal; } -static u64 vtime_delta(void) -{ - u64 timer = S390_lowcore.last_update_timer; - - S390_lowcore.last_update_timer = get_vtimer(); - - return timer - S390_lowcore.last_update_timer; -} - /* * Update process times based on virtual cpu times stored by entry.S * to the lowcore fields user_timer, system_timer & steal_clock. */ -void vtime_account_kernel(struct task_struct *tsk) +void vtime_account_irq_enter(struct task_struct *tsk) { - u64 delta = vtime_delta(); + u64 timer; - if (tsk->flags & PF_VCPU) - S390_lowcore.guest_timer += delta; + timer = S390_lowcore.last_update_timer; + S390_lowcore.last_update_timer = get_vtimer(); + timer -= S390_lowcore.last_update_timer; + + if ((tsk->flags & PF_VCPU) && (irq_count() == 0)) + S390_lowcore.guest_timer += timer; + else if (hardirq_count()) + S390_lowcore.hardirq_timer += timer; + else if (in_serving_softirq()) + S390_lowcore.softirq_timer += timer; else - S390_lowcore.system_timer += delta; + S390_lowcore.system_timer += timer; - virt_timer_forward(delta); + virt_timer_forward(timer); } +EXPORT_SYMBOL_GPL(vtime_account_irq_enter); + +void vtime_account_kernel(struct task_struct *tsk) +__attribute__((alias("vtime_account_irq_enter"))); EXPORT_SYMBOL_GPL(vtime_account_kernel); - -void vtime_account_softirq(struct task_struct *tsk) -{ - u64 delta = vtime_delta(); - - S390_lowcore.softirq_timer += delta; - - virt_timer_forward(delta); -} - -void vtime_account_hardirq(struct task_struct *tsk) -{ - u64 delta = vtime_delta(); - - S390_lowcore.hardirq_timer += delta; - - virt_timer_forward(delta); -} /* * Sorted add to a list. List is linear searched until first bigger -- Gitblit v1.6.2