Thread (7 messages) flat view 7 messages, 4 authors, 2017-06-08

Re: [PATCH] powerpc/kernel: improve FP and vector registers restoration

From: Breno Leitao <leitao@debian.org>
Date: 2017-06-04 14:34:18

On Sun, Jun 04, 2017 at 11:38:14AM +1000, Anton Blanchard wrote:
On Sat, 3 Jun 2017 19:42:14 -0300
Breno Leitao [off-list ref] wrote:
quoted
Hi Anton,

On Sat, Jun 03, 2017 at 08:04:11AM +1000, Anton Blanchard wrote:
quoted
Hi Breno,
  
quoted
Currently tsk->thread->load_vec and load_fp are not initialized
during a task creation, which set garbage to these variables
(non-zero value).  
Nice catch! It seems like we should zero load_tm too though?  
Yes, it seems we need to zero load_tm also, since it does not seem to
be zeroed anywhere else.

But I did some tests, and load_tm is always zero after start_thread()
is being called.

In fact, start_thread() is being called and pt_regs->load_tm is
already zero since the function start.

I also wrote a SystemTap script[1] to investigate it better, and I've
never seen a single load_tm != 0 in a my machine. I tested on both
POWER8 bare metal and KVM guests. (load_vec and load_fp happened to
have garbage all the time)

Any idea if this is just occasional event, or, if there is someone
zeroing it in an obscure code?
Quite likely no one uses TM :) Try:
In fact, I had tested with TM[1] and haven't seen any issue, but I was not
calling a nested application (through execve() syscall). Somehow if I
call  "$ ./tm_application ; /bin/true", I do not see a non-zero load_tm
in the new task->thread.

On the other side, I see the corruption with your test case, mainly if I
sleep after 'tbegin.' and before execlp(), giving a chance to have
load_tm incremented, and this value is being inherited in the new
task->thread.

This is obviously wrong, I will send a patch to have it fixed.

Thanks for the guidance!

[1] https://github.com/leitao/htm_torture
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help