Subject: Re: [v4] powerpc: Export thread_struct.used_vr/used_vsr to user space

From: Michael Ellerman <[email-masked]>
Date: Thu, 7 Jul 2016 21:15:33 +1000 (AEST)

On Thu, 2016-07-07 at 07:49:36 UTC, Simon Guo wrote:
> From: Simon Guo <[email-masked]>
> 
> These 2 fields track whether user process has used Altivec/VSX
> registers or not. They are used by kernel to setup signal frame
> on user stack correctly regarding vector part.

I still dislike this. It's just exporting internal kernel state, which I know is
the point.

And I'd still like to know why we're the only arch that needs to do this.

I'm not saying I won't merge it, but I'd like to understand it better first.

> CRIU(Checkpoint and Restore In User space) builds signal frame
> for restored process. It will need this export information to
> setup signal frame correctly. And CRIU will need to restore these
> 2 fields for the restored process.

I don't really know how CRIU works, but ..

Does the kernel write a sigframe for the process that's being checkpointed? If
so can't you infer the state of the bits based on what was written?

Alternately, when restoring, can you setup the sigframe with the Altivec/VSX
fields populated, and the kernel will then load them, regardless of whether
they were actually used or not prior to the checkpoint?

cheers