Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp8455054ybc; Fri, 29 Nov 2019 10:50:27 -0800 (PST) X-Google-Smtp-Source: APXvYqyTmWlhHf9JuS77L9INBNeOwKIZu3Q8EsQiwdST7u0VaaNzw8xPhXMYBq9phace9ng+bmzO X-Received: by 2002:a17:906:3602:: with SMTP id q2mr26400967ejb.167.1575053427723; Fri, 29 Nov 2019 10:50:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575053427; cv=none; d=google.com; s=arc-20160816; b=diN3iBki9SfvXP93+fV+ouGXOxp3GwJiveCiCqBE17uIDMl8HTP0fUUYB+LUDF8/K8 +GD3oZjcWAFdQRcCvid4KWXc3l4C3vuUY9AMoIfAzKtodVjW0S1ORHx8CKEKGzvFzETC sXGqxY/n4vb9WtUQ/0turaRxCHc/ZWXKHtUNarTN6Z5lA6Q0QYsHXH0tCnw8uNVv3BFF X5UiMdER/ElXmElWf+Sqv7WiA72BnpQffjFQuK+0tVQ0Q25GBKibJj+L7+CXMrSiMvA2 ozE45eKAKrrcuNq0CiyjF6opF9xyut7bd5FUbSunmEwBQc1pxPzwn6PB4N7waFeEcen/ xrPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=RlZKIOviMg0PgMgW0gMl4WAv5JneWZ8FqlwK0qcn7UA=; b=XdjeRqnaOkzca+gN4eO+P+np6nPQJjlEcghFWuiLJnGUDR/Zk+Qr1m2c7a5AywtrhB wnmD90dr2HHG6LS4gavuThUEUjv7pNGI1YGqjLCHzPg+hE+bLHcqYB/gfIuLp/WBQvwn lvcE0OXSxnz0UprO6Nr2tgcjAb/6rK11+NARrIfGFFtOIx0rTIgjXVutzcJxDD+2ZIt8 GxBbLmgXjfjucYOtEvCX+y6LJu4br/WbCZNqGPQvqP+R4am2wSkmtIcKjjfwxRIHs4G5 Rs6w8zCFGUNngTBZtUuDBU3G0ws06kTMQwGobF+/cbllF5PzCvHa0X4aQTaHVj/9SoXx 9Xjg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id mh1si14600774ejb.221.2019.11.29.10.49.50; Fri, 29 Nov 2019 10:50:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727028AbfK2Sra (ORCPT + 99 others); Fri, 29 Nov 2019 13:47:30 -0500 Received: from gate.crashing.org ([63.228.1.57]:56566 "EHLO gate.crashing.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726909AbfK2Sra (ORCPT ); Fri, 29 Nov 2019 13:47:30 -0500 Received: from gate.crashing.org (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.14.1/8.14.1) with ESMTP id xATIkxwn003148; Fri, 29 Nov 2019 12:47:00 -0600 Received: (from segher@localhost) by gate.crashing.org (8.14.1/8.14.1/Submit) id xATIkw6Y003147; Fri, 29 Nov 2019 12:46:58 -0600 X-Authentication-Warning: gate.crashing.org: segher set sender to segher@kernel.crashing.org using -f Date: Fri, 29 Nov 2019 12:46:58 -0600 From: Segher Boessenkool To: Christophe Leroy Cc: Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: Re: [PATCH v4 2/2] powerpc/irq: inline call_do_irq() and call_do_softirq() Message-ID: <20191129184658.GR9491@gate.crashing.org> References: <5ca6639b7c1c21ee4b4138b7cfb31d6245c4195c.1570684298.git.christophe.leroy@c-s.fr> <877e3tbvsa.fsf@mpe.ellerman.id.au> <20191121101552.GR16031@gate.crashing.org> <87y2w49rgo.fsf@mpe.ellerman.id.au> <20191125142556.GU9491@gate.crashing.org> <5fdb1c92-8bf4-01ca-f81c-214870c33be3@c-s.fr> <20191127145958.GG9491@gate.crashing.org> <2072e066-1ffb-867e-60ec-04a6bb9075c1@c-s.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <2072e066-1ffb-867e-60ec-04a6bb9075c1@c-s.fr> User-Agent: Mutt/1.4.2.3i Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi! On Wed, Nov 27, 2019 at 04:15:15PM +0100, Christophe Leroy wrote: > Le 27/11/2019 ? 15:59, Segher Boessenkool a ?crit?: > >On Wed, Nov 27, 2019 at 02:50:30PM +0100, Christophe Leroy wrote: > >>So what do we do ? We just drop the "r2" clobber ? > > > >You have to make sure your asm code works for all ABIs. This is quite > >involved if you do a call to an external function. The compiler does > >*not* see this call, so you will have to make sure that all that the > >compiler and linker do will work, or prevent some of those things (say, > >inlining of the function containing the call). > > But the whole purpose of the patch is to inline the call to __do_irq() > in order to avoid the trampoline function. Yes, so you call __do_irq. You have to make sure that what you tell the compiler -- and what you *don't tell the compiler -- works with what the ABIs require, and what the called function expects and provides. > >That does not fix everything. The called function requires a specific > >value in r2 on entry. > > Euh ... but there is nothing like that when using existing > call_do_irq(). > How does GCC know that call_do_irq() has same TOC as __do_irq() ? The existing call_do_irq isn't C code. It doesn't do anything with r2, as far as I can see; __do_irq just gets whatever the caller of call_do_irq has. So I guess all the callers of call_do_irq have the correct r2 value always already? In that case everything Just Works. > >So all this needs verification. Hopefully you can get away with just > >not clobbering r2 (and not adding a nop after the bl), sure. But this > >needs to be checked. > > > >Changing control flow inside inline assembler always is problematic. > >Another problem in this case (on all ABIs) is that the compiler does > >not see you call __do_irq. Again, you can probably get away with that > >too, but :-) > > Anyway it sees I reference it, as it is in input arguments. Isn't it > enough ? It is enough for some things, sure. But not all. Segher