Re: [PATCH 1/4] vtime: Remove the underscore prefix invasion

2012-11-14 Thread Steven Rostedt
On Wed, 2012-11-14 at 17:48 +0100, Frederic Weisbecker wrote:
> 2012/11/14 Steven Rostedt :
> > On Wed, 2012-11-14 at 17:26 +0100, Frederic Weisbecker wrote:
> >> Prepending irq-unsafe vtime APIs with underscores was actually
> >> a bad idea as the result is a big mess in the API namespace that
> >> is even waiting to be further extended. Also these helpers
> >> are always called from irq safe callers except kvm. Just
> >> provide a vtime_account_system_irqsafe() for this specific
> >> case so that we can remove the underscore prefix on other
> >> vtime functions.
> >>
> >
> >
> >> -void __vtime_account_system(struct task_struct *tsk)
> >> +void vtime_account_system(struct task_struct *tsk)
> >>  {
> >>   cputime_t delta = vtime_delta(tsk);
> >
> > Should we add a WARN_ON(!irqs_disabled()) check here?
> 
> Why not, I'll add one in vtime_delta().

Probably make it a WARN_ON_ONCE() no need to spam the console.

-- Steve


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/4] vtime: Remove the underscore prefix invasion

2012-11-14 Thread Frederic Weisbecker
2012/11/14 Steven Rostedt :
> On Wed, 2012-11-14 at 17:26 +0100, Frederic Weisbecker wrote:
>> Prepending irq-unsafe vtime APIs with underscores was actually
>> a bad idea as the result is a big mess in the API namespace that
>> is even waiting to be further extended. Also these helpers
>> are always called from irq safe callers except kvm. Just
>> provide a vtime_account_system_irqsafe() for this specific
>> case so that we can remove the underscore prefix on other
>> vtime functions.
>>
>
>
>> -void __vtime_account_system(struct task_struct *tsk)
>> +void vtime_account_system(struct task_struct *tsk)
>>  {
>>   cputime_t delta = vtime_delta(tsk);
>
> Should we add a WARN_ON(!irqs_disabled()) check here?

Why not, I'll add one in vtime_delta().
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/4] vtime: Remove the underscore prefix invasion

2012-11-14 Thread Steven Rostedt
On Wed, 2012-11-14 at 17:26 +0100, Frederic Weisbecker wrote:
> Prepending irq-unsafe vtime APIs with underscores was actually
> a bad idea as the result is a big mess in the API namespace that
> is even waiting to be further extended. Also these helpers
> are always called from irq safe callers except kvm. Just
> provide a vtime_account_system_irqsafe() for this specific
> case so that we can remove the underscore prefix on other
> vtime functions.
> 

 
> -void __vtime_account_system(struct task_struct *tsk)
> +void vtime_account_system(struct task_struct *tsk)
>  {
>   cputime_t delta = vtime_delta(tsk);

Should we add a WARN_ON(!irqs_disabled()) check here?

-- Steve

>  
>   account_system_time(tsk, 0, delta, delta);
>  }
>  
> -void __vtime_account_idle(struct task_struct *tsk)
> +void vtime_account_idle(struct task_struct *tsk)
>  {
>   account_idle_time(vtime_delta(tsk));
>  }


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/4] vtime: Remove the underscore prefix invasion

2012-11-14 Thread Frederic Weisbecker
Prepending irq-unsafe vtime APIs with underscores was actually
a bad idea as the result is a big mess in the API namespace that
is even waiting to be further extended. Also these helpers
are always called from irq safe callers except kvm. Just
provide a vtime_account_system_irqsafe() for this specific
case so that we can remove the underscore prefix on other
vtime functions.

Signed-off-by: Frederic Weisbecker 
Cc: Peter Zijlstra 
Cc: Ingo Molnar 
Cc: Thomas Gleixner 
Cc: Steven Rostedt 
Cc: Paul Gortmaker 
Cc: Tony Luck 
Cc: Fenghua Yu 
Cc: Benjamin Herrenschmidt 
Cc: Paul Mackerras 
Cc: Martin Schwidefsky 
Cc: Heiko Carstens 
---
 arch/ia64/kernel/time.c|8 
 arch/powerpc/kernel/time.c |4 ++--
 arch/s390/kernel/vtime.c   |4 ++--
 include/linux/kvm_host.h   |4 ++--
 include/linux/vtime.h  |8 
 kernel/sched/cputime.c |   12 ++--
 6 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c
index 5e48503..f638821 100644
--- a/arch/ia64/kernel/time.c
+++ b/arch/ia64/kernel/time.c
@@ -106,9 +106,9 @@ void vtime_task_switch(struct task_struct *prev)
struct thread_info *ni = task_thread_info(current);
 
if (idle_task(smp_processor_id()) != prev)
-   __vtime_account_system(prev);
+   vtime_account_system(prev);
else
-   __vtime_account_idle(prev);
+   vtime_account_idle(prev);
 
vtime_account_user(prev);
 
@@ -135,14 +135,14 @@ static cputime_t vtime_delta(struct task_struct *tsk)
return delta_stime;
 }
 
-void __vtime_account_system(struct task_struct *tsk)
+void vtime_account_system(struct task_struct *tsk)
 {
cputime_t delta = vtime_delta(tsk);
 
account_system_time(tsk, 0, delta, delta);
 }
 
-void __vtime_account_idle(struct task_struct *tsk)
+void vtime_account_idle(struct task_struct *tsk)
 {
account_idle_time(vtime_delta(tsk));
 }
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 0db456f..ce4cb77 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -336,7 +336,7 @@ static u64 vtime_delta(struct task_struct *tsk,
return delta;
 }
 
-void __vtime_account_system(struct task_struct *tsk)
+void vtime_account_system(struct task_struct *tsk)
 {
u64 delta, sys_scaled, stolen;
 
@@ -346,7 +346,7 @@ void __vtime_account_system(struct task_struct *tsk)
account_steal_time(stolen);
 }
 
-void __vtime_account_idle(struct task_struct *tsk)
+void vtime_account_idle(struct task_struct *tsk)
 {
u64 delta, sys_scaled, stolen;
 
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index 783e988..80d1dbc 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -140,9 +140,9 @@ void vtime_account(struct task_struct *tsk)
 }
 EXPORT_SYMBOL_GPL(vtime_account);
 
-void __vtime_account_system(struct task_struct *tsk)
+void vtime_account_system(struct task_struct *tsk)
 __attribute__((alias("vtime_account")));
-EXPORT_SYMBOL_GPL(__vtime_account_system);
+EXPORT_SYMBOL_GPL(vtime_account_system);
 
 void __kprobes vtime_stop_cpu(void)
 {
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 0e2212f..f17158b 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -741,7 +741,7 @@ static inline void kvm_guest_enter(void)
 * This is running in ioctl context so we can avoid
 * the call to vtime_account() with its unnecessary idle check.
 */
-   vtime_account_system(current);
+   vtime_account_system_irqsafe(current);
current->flags |= PF_VCPU;
/* KVM does not hold any references to rcu protected data when it
 * switches CPU into a guest mode. In fact switching to a guest mode
@@ -759,7 +759,7 @@ static inline void kvm_guest_exit(void)
 * This is running in ioctl context so we can avoid
 * the call to vtime_account() with its unnecessary idle check.
 */
-   vtime_account_system(current);
+   vtime_account_system_irqsafe(current);
current->flags &= ~PF_VCPU;
 }
 
diff --git a/include/linux/vtime.h b/include/linux/vtime.h
index 0c2a2d3..5ad13c3 100644
--- a/include/linux/vtime.h
+++ b/include/linux/vtime.h
@@ -5,14 +5,14 @@ struct task_struct;
 
 #ifdef CONFIG_VIRT_CPU_ACCOUNTING
 extern void vtime_task_switch(struct task_struct *prev);
-extern void __vtime_account_system(struct task_struct *tsk);
 extern void vtime_account_system(struct task_struct *tsk);
-extern void __vtime_account_idle(struct task_struct *tsk);
+extern void vtime_account_system_irqsafe(struct task_struct *tsk);
+extern void vtime_account_idle(struct task_struct *tsk);
 extern void vtime_account(struct task_struct *tsk);
 #else
 static inline void vtime_task_switch(struct task_struct *prev) { }
-static inline void __vtime_account_system(struct task_struct *tsk) { }
 static inline void vtime_account_system(struct t