From patchwork Wed Feb 1 17:28:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Gross X-Patchwork-Id: 93079 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp2525010qgi; Wed, 1 Feb 2017 09:32:54 -0800 (PST) X-Received: by 10.98.163.23 with SMTP id s23mr5000334pfe.60.1485970374004; Wed, 01 Feb 2017 09:32:54 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l61si19732365plb.309.2017.02.01.09.32.53; Wed, 01 Feb 2017 09:32:53 -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=@linaro.org; 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=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753847AbdBARcp (ORCPT + 25 others); Wed, 1 Feb 2017 12:32:45 -0500 Received: from mail-ot0-f182.google.com ([74.125.82.182]:32802 "EHLO mail-ot0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753754AbdBARcA (ORCPT ); Wed, 1 Feb 2017 12:32:00 -0500 Received: by mail-ot0-f182.google.com with SMTP id 73so295689205otj.0 for ; Wed, 01 Feb 2017 09:31:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=1OluZAqGG1LD4xxSCRX9etzLqNW3ox8lm9OtbZcitbc=; b=TKuYD3r5ZC16lbPd6DQF9HnjFf97mvFIIE04J2YCtVwqKgVOHSotBA6G8kKvEHsmMW kiqPSl/gq/Aj0sd0VP7U5NnvQ5byH6MZNgX9ZWgcK3/CSq3KuTCHoDi0cqFjvffEOop7 CnGff1XkxT9in6AlDn9cMY1EQbZTj33ld2DH0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=1OluZAqGG1LD4xxSCRX9etzLqNW3ox8lm9OtbZcitbc=; b=UHM9crgRWsu+nnY34eogZPm98yKg599HJHV1GqGZ+GuP66vWMJ4M42+mQCPSp9h9oj lqcjPwG8H2ICSVKTVtU5kONkHJsVgt9J3AybU1x0QGI1Xg9IaQOjUmbY0LthejXzskSY D8C5BXHNYHW3ZhCRUqyzwsMDdXSpizpfLE/Z4VanEM3mjPX7vMB2P8F0Y19of4T4Caqf fVx2MJKyZECV8kTUr+RjnzI0XSx5ALcHMuCd80JF1zVxeKnxMnKd4+LASUKKm6WLal6g O04F4nR8RZaumErfS5Ml8Px46IIujDEp2fgK9yOoIQVrOW5g0zN9s6gpWMjVJP38/Gaj GYHQ== X-Gm-Message-State: AIkVDXK/zAM8c1Z/pNfvIlffd6Y/zGvDVjj5HgIcpEfPWUtB4CTXRHDsKFl4ZuJxxE6F9FyP X-Received: by 10.157.43.81 with SMTP id f17mr1778329otd.272.1485970314717; Wed, 01 Feb 2017 09:31:54 -0800 (PST) Received: from localhost ([2602:306:3406:6500:9818:4608:a55b:37e]) by smtp.gmail.com with ESMTPSA id d131sm10747071oia.27.2017.02.01.09.31.53 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 01 Feb 2017 09:31:54 -0800 (PST) From: Andy Gross To: linux-arm-kernel@lists.infradead.org Cc: lorenzo.pieralisi@arm.com, linux-arm-msm@vger.kernel.org, will.deacon@arm.com, linux-kernel@vger.kernel.org, Bjorn Andersson , Kevin Hilman , Olof Johansson , linux@armlinux.org.uk, Andy Gross Subject: [Patch v6 0/2] Support ARM SMCC SoC vendor quirks Date: Wed, 1 Feb 2017 11:28:26 -0600 Message-Id: <1485970108-14177-1-git-send-email-andy.gross@linaro.org> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At least one SoC vendor (Qualcomm) requires additional processing done during ARM SMCCC calls. As such, an additional parameter to the arm_smccc_smc is required to be able to handle SoC specific quirks. The Qualcomm quirk is necessary due to the fact that the scm call can be interrupted on Qualcomm ARM64 platforms. When this occurs, the call must be restarted using information that was passed back during the original smc call. The first patch in this series adds a quirk structure and also adds a quirk parameter to arm_smccc_smc calls. I added macros to allow users to choose the API they need. This keeps all of the current users who do not need quirks from having to change anything. The second patch adds the Qualcomm quirk and also implements the Qualcomm firmware changes required to handle the restarting of the interrupted SMC call. The original patch set for the SMCCC session ID is located at: https://lkml.org/lkml/2016/8/20/7 Changes from v5: - Make smc and hvc calls symmetric w.r.t. quirk arguments Changes from v4: - Fix issue with hvc calls. Changes from v3: - Fix documentation Changes from v2: - Use variadic macros Changes from v1: - Add macros to handle both use cases per review comments Andy Gross (2): arm: kernel: Add SMC structure parameter firmware: qcom: scm: Fix interrupted SCM calls arch/arm/kernel/armksyms.c | 4 ++-- arch/arm/kernel/smccc-call.S | 14 ++++++----- arch/arm64/kernel/arm64ksyms.c | 4 ++-- arch/arm64/kernel/asm-offsets.c | 7 ++++-- arch/arm64/kernel/smccc-call.S | 23 +++++++++++++------ drivers/firmware/qcom_scm-64.c | 13 ++++++++--- include/linux/arm-smccc.h | 51 ++++++++++++++++++++++++++++++++--------- 7 files changed, 83 insertions(+), 33 deletions(-) -- 1.9.1