From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8EAF31607B4 for ; Sun, 26 Jan 2025 19:51:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737921080; cv=none; b=MFKQVEqrzgX0jFNLtFXBB/H8a6BLrpNC2qcZAZI/+wT1ez8v5lS9VyyzJuyDvAAmW/QUvnCpYdpkcdU1WSOjehScv4exXD2jodFwPAbHT7yKApzbDkNzSaJQNTqgqZFf5uI1ASQJ3Vs6AGePVbbZw/UfjlY8X5kLqDYa+zOJHEY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737921080; c=relaxed/simple; bh=bFhQaWsSTCNxDZkc9Tf1UUY6mLJkmzG9949TWmVJVpg=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=HkYqVrzksC1FSow8Yct0C5Q7PxhtsXDSd5LlKvDCymcHYALz057ZMNfUFqulTCyG8w53eeoUzaI0u48UmwNRXvlSZKlE6415XUuS9GWQ/Z9ramDdSpQpcS+414HGXuXnXNxfTeMZrAXCUJOzhkGlksI+T4PO9EfBkxiXltHPQMc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=Bt5TXf4v; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="Bt5TXf4v" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2165448243fso81183325ad.1 for ; Sun, 26 Jan 2025 11:51:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1737921078; x=1738525878; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=kdXvSFO+L4iwC2LmmccPPY17BASnWEA3/Y0WvP5825A=; b=Bt5TXf4vXT6TVTstKoNgmCs3ELKbt5lSbBCemJxRdug7A3xDQnvq9SlEHQfUMzy1Qq 0G/ZWv0ktFEvlRLycSf6ROZzk4QChhErxm/AjZePO55g69blv7NpY06Q0GUIwVap9eQ9 mmX4JSGb5VrLAWjLXY/w1pl9gG7LdlzcKx1dhRmE5aHF+JjTnPEPgFBPz6GsN4lGfJBx bpk0X95IShUqSLhLrF5C01TVktWd1fh+BYUIGr0Um+PVZYRrfxu5tDUzgXKX3Yzu8tg/ c7A5wlh/g4X+l8D06rgj0wPlmD3/Y1+ocD10cZOVaezG0bd/7Y8j1+QFWnD886O5kBin d6wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737921078; x=1738525878; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kdXvSFO+L4iwC2LmmccPPY17BASnWEA3/Y0WvP5825A=; b=GqMjn5OoT4+RT/BKewwJa3Xe4wtiEM8Cw+ZIZVfJXzc8Mb/qKO2DxBEXjWNiS9rmu/ 4E5g/EzGxwInX1Z+AXPz01IBOPKxaTOBTgUPE7WFkeEAHPyUSfdgrafEnYCPmm3X43x7 qN9+WrlI/IDtoNfLPdNaaq10ABqrIKkuic8yWKqcfqWeWsAEWgSuvFDYfaR8ZlDQSR0p O6yU7TgOOYxPchxVd6fSOv6TXHyIJcKpeQocIcaxTeQpB23d2xTmYrdQ0+nj2Cxw93tx tTlNl8CJ66N+5fu3brTrHnsygMmD2udekMSjyGiSL5AIJTpGdSnwkBEEf5VDKwc8kPQX 03zQ== X-Forwarded-Encrypted: i=1; AJvYcCWl35yd/WCZdrwM6vvEpyJKyRTgXNZ4Xops2fkdSeqP526qAmD6IAV52q8/9Rv69V3M2dtZC0wJRvk7csY=@vger.kernel.org X-Gm-Message-State: AOJu0YwxlOeRFzM1w8QFAIMaSWTI1Le+8RJuWBBsFyn+Bf44At4RBQWw H2wSayq0mh2J/VMpFb5vqxkMlLPOtDmCdyn+zQLKR4VhaGqukaOFsF8u9srOt52GSzvLUwO7TXm hvTQ= X-Gm-Gg: ASbGncvzqezL/X8zhN4S4sy8O3W2h6ijnij5obJHnvO9YCDlZjuahrEKO4hr/3TXLsf L88OvC2xneF/wxCoXqJ//82uLX13ln6VyWqytAt8iPw4hQbCJCDErkcp12mO60J/R2PB8ZwO62W r2vB8UzM/to2yhJ7CQmO5arNmRXMsGHCiNu6UnQoCpQHwXGF22+1ZHd5gQ5c3WFGg1QOPgCOq5+ 4xDjjv+bIDorzyMTk/0jw38gfAEK71jhdc+9eZT6s4TWZSGr1o3WpQFuQYse8P3ANm0pkuGdg== X-Google-Smtp-Source: AGHT+IGoSk4mYu17VQ+itknZWL14N0o9mebUHaIoovydNlfjrIPinqMagEZkniueh88np/z9Ikm2NA== X-Received: by 2002:a05:6a00:180c:b0:725:e309:7110 with SMTP id d2e1a72fcca58-72daf9a53acmr50924580b3a.5.1737921077810; Sun, 26 Jan 2025 11:51:17 -0800 (PST) Received: from ghost ([2601:647:6700:64d0:6c5:2e43:4ce6:45b]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-ac48f897ed3sm4969089a12.29.2025.01.26.11.51.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Jan 2025 11:51:16 -0800 (PST) Date: Sun, 26 Jan 2025 11:51:13 -0800 From: Charlie Jenkins To: "Maciej W. Rozycki" Cc: Paul Walmsley , Palmer Dabbelt , Huacai Chen , WANG Xuerui , Thomas Gleixner , Peter Zijlstra , Andy Lutomirski , Alexandre Ghiti , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev Subject: Re: [PATCH 1/4] riscv: entry: Convert ret_from_fork() to C Message-ID: References: <20250122-riscv_optimize_entry-v1-0-4ee95559cfd0@rivosinc.com> <20250122-riscv_optimize_entry-v1-1-4ee95559cfd0@rivosinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: On Sat, Jan 25, 2025 at 11:30:09PM +0000, Maciej W. Rozycki wrote: > On Wed, 22 Jan 2025, Charlie Jenkins wrote: > > > diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S > > index 33a5a9f2a0d4e1eeccfb3621b9e518b88e1b0704..9225c322279aa90e737b1d7144db084319cf8103 100644 > > --- a/arch/riscv/kernel/entry.S > > +++ b/arch/riscv/kernel/entry.S > > @@ -319,17 +319,14 @@ SYM_CODE_END(handle_kernel_stack_overflow) > > ASM_NOKPROBE(handle_kernel_stack_overflow) > > #endif > > > > -SYM_CODE_START(ret_from_fork) > > +SYM_CODE_START(ret_from_fork_asm) > > call schedule_tail > > - beqz s0, 1f /* not from kernel thread */ > > - /* Call fn(arg) */ > > - move a0, s1 > > - jalr s0 > > -1: > > - move a0, sp /* pt_regs */ > > - call syscall_exit_to_user_mode > > + move a0, s1 /* fn */ > > + move a1, s0 /* fn_arg */ > > + move a2, sp /* pt_regs */ > > + call ret_from_fork > > j ret_from_exception > > Wouldn't it make sense to save a jump here and make it a tail call, i.e.: > > la ra, ret_from_exception > tail ret_from_fork > I don't believe so due to the return address stack. It was shown in this patch [1] that a 7% performance improvement can be seen on existing riscv hardware by performing the extra jump. Doing tail calls should be avoided on riscv since the hardware can be expected to predict the return address incorrectly every time if the return address is manually changed. - Charlie > ? > > Maciej