From patchwork Fri May 21 15:10:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 12273287 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5CFBCC47076 for ; Fri, 21 May 2021 15:32:23 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E210E613D1 for ; Fri, 21 May 2021 15:32:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E210E613D1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=fXXKV47D7AOxA77PNMMczxNvxxyGdr2bLRQunjMbVFY=; b=h5HYcAf9zi0ECDG0cZQwBo/tg+ mBfwELoujAUYaiV787oycrXqKOXDbjduYL6un0imoh8jdr0tZmFCqr04E1oS/73uch8xQxN6Vo3QO JTkj4s+78YnfSmdxSWQiCyeEKsaoox2WnG5cnzba5Xsn9mCsgZPnPTqka6pHYonP6TOiKqdL8wcD0 US7T6GJdhNbvWVwUotQtLS65Rzk94zjr3M5mTenn2jeVbiHBgbfzdJ8vXwYyKbIuxfxFlT0pYwsAK k9rEnOIh0Sb5euAJn3zX3ugQd073rXuwPLnQeiirKAleNQTJYUI5X5D3jdPbodzo6l2G9BUSIZpQs vb6Y5Y7w==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lk76e-00032M-GE; Fri, 21 May 2021 15:30:32 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lk72v-0001OK-Kv for linux-arm-kernel@desiato.infradead.org; Fri, 21 May 2021 15:26:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: Content-ID:Content-Description:In-Reply-To:References; bh=Gl2eZ7N7W1KJaIz+aaiEOnU4sdeQFYCRQfq+EoDl/u8=; b=o3vvDzbw1c6OX3zYHfLpk6yx1K 2Ve9wx0iiWG56jt3Fr7YH/ssQCufH/3iw5uKFch5b4aLGoEK499WUNZQJ0YwAffmPtL+TLNa/6DiY rpcU0ba6y5OFT4wj7ea4+wF7KEM2ruA0YUK+Un42Th27dkex33KaN84FGUzmVdNOLsj5ApIVRHNu7 2Sz5QgBigtmFRHLgzgPfF4caeuqlQaZ/uAzKEFAXIHSEvGPrxPhxuSaR5Dgqr17BQUmdKTrvPTJbw L9t01km9s1E2wfh6cW7j2P9fdPs7vRGXxkXCHP7n8pgoyzRgDPq8qV3QAmEMdWOXW4kajI/04WVfD 0aJCX8cQ==; Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lk6na-00HDij-8N for linux-arm-kernel@lists.infradead.org; Fri, 21 May 2021 15:10:52 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 354D411B3; Fri, 21 May 2021 08:10:43 -0700 (PDT) Received: from usa.arm.com (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id F14453F73B; Fri, 21 May 2021 08:10:41 -0700 (PDT) From: Sudeep Holla To: linux-arm-kernel@lists.infradead.org Cc: Sudeep Holla , arve@google.com, Andrew Walbran , David Hartley , Achin Gupta , Jens Wiklander , Arunachalam Ganapathy , Marc Bonnici Subject: [PATCH v7 0/5] firmware: Add initial support for Arm FF-A Date: Fri, 21 May 2021 16:10:28 +0100 Message-Id: <20210521151033.181846-1-sudeep.holla@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210521_081050_410973_BA01CC5C X-CRM114-Status: GOOD ( 19.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi all, This is very basic implementation for in-kernel support for Arm FF-A specification. Arm Firmware Framework for Armv8-A specification[1] describes a software architecture that provides mechanism to utilise the virtualization extension to isolate software images and describes interfaces that standardize communication between the various software images. This includes communication between images in the Secure and Normal world. The main idea here is to create FFA device to establish any communication with a secure partition. This is currently tested with OPTEE(with changes to OPTEE driver adding FFA as transport) The series can be fetched from [2] --- Regards, Sudeep [1] https://developer.arm.com/documentation/den0077/latest [2] git://git.kerniel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git v5.13/ffa v6->v7: - Dropped SMCCC v1.2 changes in the series as it is posted separately @https://lore.kernel.org/r/20210518163618.43950-1-sudeep.holla@arm.com - Fixed error paths in ffa_init - Added tested and review tags v5->v6: - Dropped DT dependecy completely and use the discovery APIs for adding FFA partitions on the bus. They is some workaround added as v1.0 doesn't provide UUID as part of the discovery APIs which is used to match the devices and driver on FFA bus. - Extended SMCCC v1.2 API to support full set of input and output registers. - Couple of minor bug fixes found as part of testing v4->v5: - Fixed couple of comments in DT bindings - Moved to use native version of RXTX_MAP call, fixed vm_id param to RXTX_UNMAP, dropped couple of unused confusingly named macros (can be added back with correct name when we need to use them) v3->v4: - Added support to allow partitions to set 32bit only mode - Addressed all the comments from Jens Wiklander v2->v3: - Dropped hypervisor partitions and userspace support as it is no longer in the list of requirements - Moved away from ioctl style interface for in-kernel users as there is no need to keep in sync with userspace anymore - Some kerneldoc fixes as pointed out in earlier reviews v1->v2: - Moved userspace code to a separate unit, will move to separate module. Still working on minimizing initcall dependencies and exported functions to reuse some of the code. - Fixed couple of minor issues pointed out - Dropped ASYNC send message as I haven't been able to test *** BLURB HERE *** Sudeep Holla (5): firmware: arm_ffa: Add initial FFA bus support for device enumeration firmware: arm_ffa: Add initial Arm FFA driver support firmware: arm_ffa: Add support for SMCCC as transport to FFA driver firmware: arm_ffa: Setup in-kernel users of FFA partitions firmware: arm_ffa: Add support for MEM_* interfaces MAINTAINERS | 7 + drivers/firmware/Kconfig | 1 + drivers/firmware/Makefile | 1 + drivers/firmware/arm_ffa/Kconfig | 21 + drivers/firmware/arm_ffa/Makefile | 6 + drivers/firmware/arm_ffa/bus.c | 210 +++++++++ drivers/firmware/arm_ffa/common.h | 31 ++ drivers/firmware/arm_ffa/driver.c | 730 ++++++++++++++++++++++++++++++ drivers/firmware/arm_ffa/smccc.c | 39 ++ include/linux/arm_ffa.h | 266 +++++++++++ 10 files changed, 1312 insertions(+) create mode 100644 drivers/firmware/arm_ffa/Kconfig create mode 100644 drivers/firmware/arm_ffa/Makefile create mode 100644 drivers/firmware/arm_ffa/bus.c create mode 100644 drivers/firmware/arm_ffa/common.h create mode 100644 drivers/firmware/arm_ffa/driver.c create mode 100644 drivers/firmware/arm_ffa/smccc.c create mode 100644 include/linux/arm_ffa.h