mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Arnd Bergmann" <arnd@arndb.de>
To: "Christian Brauner" <brauner@kernel.org>,
	"Randy Dunlap" <rdunlap@infradead.org>
Cc: linux-kernel@vger.kernel.org, "Dinh Nguyen" <dinguyen@kernel.org>,
	"Christian Brauner" <christian@brauner.io>
Subject: Re: [PATCH RESEND^2] nios2: support clone3() syscall
Date: Wed, 02 Aug 2023 10:16:56 +0200	[thread overview]
Message-ID: <d2c8e5ca-44e0-41ec-84d0-ef743a62a2a1@app.fastmail.com> (raw)
In-Reply-To: <20230802-abgaben-behutsam-92946d2ecbf5@brauner>

On Wed, Aug 2, 2023, at 09:40, Christian Brauner wrote:
> On Tue, Aug 01, 2023 at 10:19:24PM -0700, Randy Dunlap wrote:
>> Add support for the clone3() syscall to prevent a warning from
>> checksyscalls.sh:
>> 
>> <stdin>:1517:2: warning: #warning syscall clone3 not implemented [-Wcpp]
>> 
>> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
>> Cc: Dinh Nguyen <dinguyen@kernel.org>
>> Cc: Christian Brauner <christian@brauner.io>
>> ---
>> Is there some reason that NIOS2 should not (does not) support clone3()?
>
> Cc Arnd, in case he knows.

As far as I remember, you left a few architectures without clone3
during the introduction when there was neither an obvious way to
handle the syscall entry nor a maintainer to have a look.

Right now, it seems to be missing on alpha, hexagon, ia64,
microblaze, nios2, sh and sparc.

There are a few architectures that implement a custom entry
point for both clone and clone3. The other architectures that
provide the generic sys_clone3 also use the generic sys_clone.
These are the wrappers I see:

# ARC
ENTRY(sys_clone3_wrapper)
        SAVE_CALLEE_SAVED_USER
        bl  @sys_clone3
        DISCARD_CALLEE_SAVED_USER

        GET_CURR_THR_INFO_FLAGS   r10
        and.f 0, r10, _TIF_SYSCALL_WORK
        bnz   tracesys_exit

        b .Lret_from_system_call
END(sys_clone3_wrapper)

# m68k
ENTRY(__sys_clone3)
        SAVE_SWITCH_STACK
        pea     %sp@(SWITCH_STACK_SIZE)
        jbsr    m68k_clone3
        lea     %sp@(28),%sp
        rts


# mips
save_static_function(sys_clone3);

# openrisc
ENTRY(__sys_clone3)
        l.movhi r29,hi(sys_clone3)
        l.j     _fork_save_extra_regs_and_call
         l.ori  r29,r29,lo(sys_clone3)

# parisc
        .macro  fork_like name
ENTRY_CFI(sys_\name\()_wrapper)
        mfctl   %cr30,%r1
        ldo     TASK_REGS(%r1),%r1
        reg_save %r1
        mfctl   %cr27, %r28
        ldil    L%sys_\name, %r31
        be      R%sys_\name(%sr4,%r31)
        STREG   %r28, PT_CR27(%r1)
ENDPROC_CFI(sys_\name\()_wrapper)
        .endm
fork_like clone
fork_like clone3

Nios3 in turn has a wrapper for sys_clone:
ENTRY(sys_clone)
        SAVE_SWITCH_STACK
        subi    sp, sp, 4 /* make space for tls pointer */
        stw     r8, 0(sp) /* pass tls pointer (r8) via stack (5th argument) */
        call    nios2_clone
        addi    sp, sp, 4
        RESTORE_SWITCH_STACK
        ret

so my guess would be that it needs the same thing
for clone3 as well. Same thing on alpha, ia64 and
sparc. On the other hand hexagon, microblaze and sh 
use the generic sys_clone() and can probably just
enable sys_clone3() without extra work unless it's
already broken.

       Arnd

  reply	other threads:[~2023-08-02  8:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-02  5:19 Randy Dunlap
2023-08-02  7:40 ` Christian Brauner
2023-08-02  8:16   ` Arnd Bergmann [this message]
2023-08-02 15:43     ` Randy Dunlap
2023-08-06 17:52       ` Dinh Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d2c8e5ca-44e0-41ec-84d0-ef743a62a2a1@app.fastmail.com \
    --to=arnd@arndb.de \
    --cc=brauner@kernel.org \
    --cc=christian@brauner.io \
    --cc=dinguyen@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rdunlap@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®