Christian Brauner <christian@xxxxxxxxxx> writes: > On Fri, Jul 19, 2019 at 08:18:02PM +1000, Michael Ellerman wrote: >> Christian Brauner <christian@xxxxxxxxxx> writes: >> > On Mon, Jul 15, 2019 at 03:56:04PM +0200, Christian Borntraeger wrote: >> >> I think Vasily already has a clone3 patch for s390x with 435. >> > >> > A quick follow-up on this. Helge and Michael have asked whether there >> > are any tests for clone3. Yes, there will be and I try to have them >> > ready by the end of the this or next week for review. In the meantime I >> > hope the following minimalistic test program that just verifies very >> > very basic functionality (It's not pretty.) will help you test: >> >> Hi Christian, >> >> Thanks for the test. >> >> This actually oopses on powerpc, it hits the BUG_ON in CHECK_FULL_REGS >> in process.c around line 1633: >> >> } else { >> /* user thread */ >> struct pt_regs *regs = current_pt_regs(); >> CHECK_FULL_REGS(regs); >> *childregs = *regs; >> if (usp) >> >> >> So I'll have to dig into how we fix that before we wire up clone3. >> >> Turns out testing is good! :) > > Indeed. I have a test-suite for clone3 in mind and I hope to have it > ready by the end of next week. It's just always the finding the time > part that is annoying. :) I know the feeling! > Thanks for digging into this, Michael! No worries, happy to help where I can. In the intervening five minutes I remembered how we handle this, we just need a little wrapper to save the non-volatile regs: _GLOBAL(ppc_clone3) bl save_nvgprs bl sys_clone3 b .Lsyscall_exit A while back I meant to make it generate those automatically based on a flag in the syscall.tbl but of course haven't got around to it :) So with the above it seems all good: $ ./clone3 ; echo $? Parent process received child's pid 4204 as return value Parent process received child's pidfd 3 Parent process received child's pid 4204 as return argument Child process with pid 4204 0 I'll send a patch to wire it up on Monday. cheers