Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp8110601imu; Tue, 4 Dec 2018 03:10:54 -0800 (PST) X-Google-Smtp-Source: AFSGD/VJrIBH3wZrUfkYj6drbZ/FtYy5VwrTOwpyZlBX4brk7xhXp0cf5ARQVS9Xp/tmJEAqTsKh X-Received: by 2002:a17:902:6946:: with SMTP id k6mr19988254plt.101.1543921854737; Tue, 04 Dec 2018 03:10:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543921854; cv=none; d=google.com; s=arc-20160816; b=EyMmMRIxDWR7TQp+ZYp1qlHdVcifgN7brkzZIIJQDRLc1qZUPevHjGU7iYvRXzq+O9 UXJ8iC0yTsITcTqhpPPDGQVVZbo7JDVar4pAK92Aeo+6gtXg2+98FoXFetkP3yiWgILa 7xwDDywgiugCy6iYDqZ+uWFNgiL3LziqEjbAoNSFVCwmqXYrdnW85ZqOxYnPiJsprYyd lkEykxqTKD79pfMOqzqV7Gc+kv20jnkQzSjRNqyVZdnXSdFMeP5JjzdrRrzQN9a0JVl0 YUH3QqWC7rbstdE3GjpNipWDM2dMMrlhKIBuCCr9/ocxsoASOPBzsPXgBp4s659SB53y Ajng== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=K9vnE9hGeIkPDKnimjcy8lMok/syo5tO+KfiGeuE1Nw=; b=eyR545hNWOslHZlza1ovtaW6wQGOe5yPATkBQlYu7NVw7prLRU9l8ud4W9TVN8A6rZ chRL5lRzzkJOybeko5GHAPFyzumvbgcvBjc9Wm+wmVqNqRvLR5elF06R7mIuUXgsaF0W SnMrGj2xOONFXwC1Wy4MsE0snom3vPI+5e4qEPafv99ESFHzwpX1yk8ajuHS0ty5xnnP mmKgTufSyS8qPY78zzRZ321p7vDlWwgW8O6t6wAYC9nb7OmtLVeyUaLMNGkoz00xUZY9 /C7Rehv5SEL8YSE5Z/4rY+5z4aE1n/B3tfd2SqdiRv5MWdMrGQgPOpp+Jpf7Vaa0p+kb uAzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=nUnwQGBK; 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 e4si14931454pgl.570.2018.12.04.03.10.39; Tue, 04 Dec 2018 03:10:54 -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; dkim=pass header.i=@kernel.org header.s=default header.b=nUnwQGBK; 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 S1728861AbeLDLJu (ORCPT + 99 others); Tue, 4 Dec 2018 06:09:50 -0500 Received: from mail.kernel.org ([198.145.29.99]:59636 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728846AbeLDLJn (ORCPT ); Tue, 4 Dec 2018 06:09:43 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 7D7A82087F; Tue, 4 Dec 2018 11:09:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543921783; bh=H+hY3NS9MiYccex1e5HlBnjizWnrGCr7apg0iUxT3QY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nUnwQGBK+7btAmvKDeTAAdkuqDpoj9T6l8dfkSC1x+WxaHGiBgb2Dwag72NmC6J8f xGIZ+0k2Fb/hHtGFFfGPZf8W7r90pe704bIydPvSsVCP+9wUgkWmqdaBTxh7lTTyZ/ Ocj25c/t567PUU/T5mLEMeW/SDTou1Z8J1roHj5Q= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dmitry Osipenko , Stephen Warren , Thierry Reding , Stefan Agner , Nick Desaulniers Subject: [PATCH 4.9 47/50] ARM: trusted_foundations: do not use naked function Date: Tue, 4 Dec 2018 11:50:42 +0100 Message-Id: <20181204103716.838713183@linuxfoundation.org> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181204103714.485546262@linuxfoundation.org> References: <20181204103714.485546262@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Stefan Agner (commit 4ea7bdc6b5b33427bbd3f41c333e21c1825462a3 upstream) 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 Signed-off-by: Thierry Reding Signed-off-by: Nick Desaulniers Signed-off-by: Greg Kroah-Hartman --- arch/arm/firmware/trusted_foundations.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) --- 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"); } static int tf_set_cpu_boot_addr(int cpu, unsigned long boot_addr)