Received: by 10.213.65.68 with SMTP id h4csp31059imn; Mon, 26 Mar 2018 14:22:10 -0700 (PDT) X-Google-Smtp-Source: AG47ELsJlFVAyafuokSJ2jEdAiCvO8D2wUHfe9XVhhwgZ+L+tgL23sEGgPJjnkY8ghALcEQoRjZ0 X-Received: by 2002:a17:902:51ce:: with SMTP id y72-v6mr41618943plh.157.1522099330646; Mon, 26 Mar 2018 14:22:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522099330; cv=none; d=google.com; s=arc-20160816; b=w/DJyqoo7U55qkXq/Qm7POt/oCGAoqQO8B/SgLWGz7/iJSXKCNVoQshiMML1VDp/Z0 ZWGJ5inwj64ySl5ABJAwUdDwnIrQJYvIYZNWqSOvr3g55jkWaWfUM2t5LhGqxfzJwOOt 0g1+K6xqRMH/6EsNNs4+k35nZQp8EyaVNXeScrIgiaqHcCjMy/Zrl5HcbWiwM7FrmnoC UN3kLiPNLg1dZQpQ8/8oxBSUFeXFM1Xg5ujMiEbBRQZKig8fTMGpqrDaMonHoYuJImo3 k7u/DiQuM3wdwxOCxqMbyfdIfYRtzF6DiPBxjncJBkcAsKFvordYbbd7mYpYUCUSEdQx 7UxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:openpgp:from:references:cc:to:subject :dkim-signature:arc-authentication-results; bh=dZmsEn4f/pJDYbL15LOXmEHu2Tzke+SwypyWfnchpHU=; b=n5Pd2L1pQFpYwHJuAlgXirQHP6OUSBTN/B5vbQXkSb3f6a9k52uhC1HzEoGPHCWwGC ASzEA+PpKPVZiSYungu2RBYLEvYAusg8j3hE/eWanyhcfh7EWNg0NCFn3MUKQFKMia6W g62Zr1+opQ9mAO6j4CsyWvW20knu8GgAR0J97KbST3N++pG+EIDFg7i3FmckhmD4fU97 TJ8nH7sqWoN8gEW5CMe0hYbaSLNR1apiEU1R+2k1PBOyduv5Z7esV2/KlHry0xUCwFrQ 1LubrW2LPe65K7BOp7i0RqFvu7wQvuDztAy8y9sKen1S5UP2AbwZn4s9y22lkTwire2b GhSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GEJqhC8i; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t14si10653373pgr.277.2018.03.26.14.21.54; Mon, 26 Mar 2018 14:22:10 -0700 (PDT) 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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GEJqhC8i; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752040AbeCZVUv (ORCPT + 99 others); Mon, 26 Mar 2018 17:20:51 -0400 Received: from mail-pl0-f65.google.com ([209.85.160.65]:46893 "EHLO mail-pl0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750983AbeCZVUr (ORCPT ); Mon, 26 Mar 2018 17:20:47 -0400 Received: by mail-pl0-f65.google.com with SMTP id f5-v6so12733758plj.13 for ; Mon, 26 Mar 2018 14:20:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:openpgp:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=dZmsEn4f/pJDYbL15LOXmEHu2Tzke+SwypyWfnchpHU=; b=GEJqhC8iwqOwHVMzI3lfUoPoXJtwSGWPWYyNTYwqPbqSkOoH2Ky4vKHBVJGPCMflD8 y+1B0ghRXzB2RbSW/J8DiuIoYVRPryd/qkoBgiNgrmFf844c+b2J7Nga1cv9Q7uyQYu9 muXDCK4oKIiGWscHThdxMyqVicNCvoNSLlS2W1q1G63WipVZBy+KEzTdWhoVOMvQfAMQ xYecp7+vYHTdyMP8MT8oxQy9u2cWbarmBBqu53Fkp2ZLM2nlJauaAsQG36k13TmozBzS 9OY6mNufyUtfqozQzWpnCTEjAxmaMSwNzJYKO6fSSJPQOlauQNjreZp5OYpasMDp0GkL h95Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=dZmsEn4f/pJDYbL15LOXmEHu2Tzke+SwypyWfnchpHU=; b=VjUyzA3rKMhZ9z38TdT9K1NLIAPGCKK8q91Pghd2Bi8Yu/PUfx4LoqfwowiOEEmDpI /NptBfQZNBAEYnw1sQu/ay482OPeASIBx84quCQlDy+j2ouR/zl/qCqQg0x+y1sid91x olHVXMwes2LItBPWnBlHYqW0hd67HxqTAU8/7CNpb4+ZAzbn8cj2V3HtWx2CL7R2ovDD I8+iSBTE2m7KfR38Gsm6uH4ulVpyNZd2N/rXv1KyvpWjTFbBWpLWkVl8EUIBTSsrE1xL 28c5ZmL4VjDt1sZs97wuqI8lzXN2BLqQ6swHc1zIBv2dyMvwp4EH5AC4O68H/JKS9igX DbcQ== X-Gm-Message-State: AElRT7GZXrQfp/2jqSy8biQDICy7Mpw7ViBTrdPO21pV+e7i7u2BNZ2k crbKhqLKtz4hZ33etOrYesA= X-Received: by 2002:a17:902:6597:: with SMTP id c23-v6mr6070240plk.321.1522099246820; Mon, 26 Mar 2018 14:20:46 -0700 (PDT) Received: from [192.168.1.145] (ppp109-252-55-234.pppoe.spdop.ru. [109.252.55.234]) by smtp.googlemail.com with ESMTPSA id w24sm14808335pfl.84.2018.03.26.14.20.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 26 Mar 2018 14:20:46 -0700 (PDT) Subject: Re: [PATCH v2 3/6] ARM: trusted_foundations: do not use naked function To: Stefan Agner , linux@armlinux.org.uk, ard.biesheuvel@linaro.org, arnd@arndb.de Cc: robin.murphy@arm.com, nicolas.pitre@linaro.org, marc.zyngier@arm.com, behanw@converseincode.com, keescook@chromium.org, Bernhard.Rosenkranzer@linaro.org, mka@chromium.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Stephen Warren , Thierry Reding References: <20180325180959.28008-1-stefan@agner.ch> <20180325180959.28008-4-stefan@agner.ch> From: Dmitry Osipenko Openpgp: preference=signencrypt Autocrypt: addr=digetx@gmail.com; keydata= xsBNBFpX5TwBCADQhg+lBnTunWSPbP5I+rM9q6EKPm5fu2RbqyVAh/W3fRvLyghdb58Yrmjm KpDYUhBIZvAQoFLEL1IPAgJBtmPvemO1XUGPxfYNh/3BlcDFBAgERrI3BfA/6pk7SAFn8u84 p+J1TW4rrPYcusfs44abJrn8CH0GZKt2AZIsGbGQ79O2HHXKHr9V95ZEPWH5AR0UtL6wxg6o O56UNG3rIzSL5getRDQW3yCtjcqM44mz6GPhSE2sxNgqureAbnzvr4/93ndOHtQUXPzzTrYB z/WqLGhPdx5Ouzn0Q0kSVCQiqeExlcQ7i7aKRRrELz/5/IXbCo2O+53twlX8xOps9iMfABEB AAHNIkRtaXRyeSBPc2lwZW5rbyA8ZGlnZXR4QGdtYWlsLmNvbT7CwJQEEwEIAD4WIQSczHcO 3uc4K1eb3yvTNNaPsNRzvAUCWlflPAIbAwUJA8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIX gAAKCRDTNNaPsNRzvFjTCACqAh1M9/YPq73/ai5h2ExDquTgJnjegL8KL2yHL3G+XINwzN5E nPI7esoYm+zVWDJbv3UuRqylpookLNSRA01yyvkaMcipB/B128UnqmUiGRqezj9QE20yIauo uHRuwHPE2q+UkfUhRX9iuOaEyQtZDiCa0myMjmRkJ+Z8ZetclEPG8dYZu47w04phuMlu1QAt a0gkZOaMKvXgj21ushALS6nYnvm7HiIPQXfnEXThartatRvFdmbG4PCn0IoICkQBizwJtXrL HEjELIFap0M8krVJlUoZTFaZnaZkGpUDWikeFtAuie2KuIxmVBYPM4X7pM3eP3AVvIPGS7EE UUFuzsBNBFpX5TwBCADFNDou220thijaLLGaQsebWjzc/gPRxMixIpk856MRyRaQin+IbGD6 YskMb5ZSD3nS88LIKNfY4MMH0LwfYztI++ICG2vdFLkbBt78E+LqEa+kZ9072l4W5KO3mWQo +jMfxXbpgGlc7iuEReDgl8iyZ27r51kSW665CYvvu2YJhLqgdj6QM1lN2D1UnhEhkkU+pRAj 1rJVOxdfJaQNQS4+204p3TrURovzNGkN/brqakpNIcqGOAGQqb8F0tuwwuP7ERq/BzDNkbdr qJOrVC/wkHRq1jfabQczWKf8MwYOvivR3HY8d3CpSQxmUXDtdOWfg0XGm1dxYnVfqPjuJaZt ABEBAAHCwHwEGAEIACYWIQSczHcO3uc4K1eb3yvTNNaPsNRzvAUCWlflPAIbDAUJA8JnAAAK CRDTNNaPsNRzvJzuB/9d+sxcwHbO8ZDcgaLX9N+bXFqN9fIRVmBUyWa+qqTSREA4uVAtYcRT lfPE2OQ7aMFxaYPwo+/z5SLpu8HcEhN/FG9uIkfYwK0mdCO0vgvlfvBJm4VHe7C6vyAeEPJQ DKbBvdgeqFqO+PsLkk2sawF/9sontMJ5iFfjNDj4UeAo4VsdlduTBZv5hHFvIbv/p7jKH6OT 90FsgUSVbShh7SH5OzAcgqSy4kxuS1AHizWo6P3f9vei987LZWTyhuEuhJsOfivDsjKIq7qQ c5eR+JJtyLEA0Jt4cQGhpzHtWB0yB3XxXzHVa4QUp00BNVWyiJ/t9JHT4S5mdyLfcKm7ddc9 Message-ID: <704c863a-0b5a-6396-d7da-f0ed17b7cca2@gmail.com> Date: Tue, 27 Mar 2018 00:20:33 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180325180959.28008-4-stefan@agner.ch> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 25.03.2018 21:09, Stefan Agner wrote: > As documented in GCC naked functions should only use Basic asm > syntax. The Extended asm or mixture of Basic asm and "C" code is > not guaranteed. Currently this works because it was hard coded > to follow and check GCC behavior for arguments and register > placement. > > Furthermore with clang using parameters in Extended asm in a > naked function is not supported: > arch/arm/firmware/trusted_foundations.c:47:10: error: parameter > references not allowed in naked functions > : "r" (type), "r" (arg1), "r" (arg2) > ^ > > Use a regular function to be more portable. This aligns also with > the other smc call implementations e.g. in qcom_scm-32.c and > bcm_kona_smc.c. > > Cc: Dmitry Osipenko > Cc: Stephen Warren > Cc: Thierry Reding > Signed-off-by: Stefan Agner > --- > Changes in v2: > - Keep stmfd/ldmfd to avoid potential ABI issues > > arch/arm/firmware/trusted_foundations.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arch/arm/firmware/trusted_foundations.c b/arch/arm/firmware/trusted_foundations.c > index 3fb1b5a1dce9..689e6565abfc 100644 > --- a/arch/arm/firmware/trusted_foundations.c > +++ b/arch/arm/firmware/trusted_foundations.c > @@ -31,21 +31,25 @@ > > static unsigned long cpu_boot_addr; > > -static void __naked tf_generic_smc(u32 type, u32 arg1, u32 arg2) > +static void tf_generic_smc(u32 type, u32 arg1, u32 arg2) > { > + register u32 r0 asm("r0") = type; > + register u32 r1 asm("r1") = arg1; > + register u32 r2 asm("r2") = arg2; > + > asm volatile( > ".arch_extension sec\n\t" > - "stmfd sp!, {r4 - r11, lr}\n\t" > + "stmfd sp!, {r4 - r11}\n\t" > __asmeq("%0", "r0") > __asmeq("%1", "r1") > __asmeq("%2", "r2") > "mov r3, #0\n\t" > "mov r4, #0\n\t" > "smc #0\n\t" > - "ldmfd sp!, {r4 - r11, pc}" > + "ldmfd sp!, {r4 - r11}\n\t" > : > - : "r" (type), "r" (arg1), "r" (arg2) > - : "memory"); > + : "r" (r0), "r" (r1), "r" (r2) > + : "memory", "r3", "r12", "lr"); Although seems "lr" won't be affected by SMC invocation because it should be banked and hence could be omitted entirely from the code. Maybe somebody could confirm this.