[sched/core] cpuacct_charge() problem

2017-11-09 Thread Pavel V. Panteleev

Hello!

task_pt_regs() always show on the user regs for user thread, even if 
it's working in kernel mode now. So, index calculation in 
cpuacct_charge() isn't correct and it's always  CPUACCT_STAT_USER for 
user thread. The time, spent in kernel mode for user task, will be lost:


int index = CPUACCT_STAT_SYSTEM;
struct pt_regs *regs = task_pt_regs(tsk);

if (regs && user_mode(regs))
index = CPUACCT_STAT_USER;



pt_regs usage in cpuacct_charge()

2017-11-09 Thread Pavel V. Panteleev

Hello!

In cpuacct_charge() function pt_regs of other thread could be used. 
There is a such call chain: ...-> __schedule -> pick_next_task_fair -> 
load_balance -> idle_balance -> load_balance -> detach_tasks -> 
deactivate_task -> dequeue_task_fair -> dequeue_entity -> update_curr -> 
cpuacct_charge.


I think that pt_regs could disappeared or be changed. How it's assumed 
to syncronize pt_regs usage in this place?


Kernel verion 4.9.47-rt47.


Best regards,
Pavel V. Panteleev


Здарово! Хочу по секрету с тобой кое чем поделиться , нашел тему в которой можно заработать несколько тысяч $, описание курса по заработку, пока в в сети

2014-09-10 Thread Pavel V . Panteleev
   http://wecare2serve.com/money_order_locations.php