Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5683588imu; Tue, 13 Nov 2018 10:06:32 -0800 (PST) X-Google-Smtp-Source: AJdET5dF/e/FNf3eBRI6a6YAibYKaG4TLtBGebaVYpcT7koi7RsOOwNZrAByt3blm3w32d34Upv5 X-Received: by 2002:a17:902:aa08:: with SMTP id be8-v6mr6135043plb.294.1542132392454; Tue, 13 Nov 2018 10:06:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542132392; cv=none; d=google.com; s=arc-20160816; b=yiLgNlyPaBIt4lSgoDPfzHDwAQkIK5FNq9k+1TmC+/BXuWURnxUIWFq+KLS4xUaWap NPbg9Of7G2WEl8Bt5qoTVM6BHiQCKeTF7MoUvxbCbnpNHpeAaZ5Kz6R7czf7rhAjD436 6ww1y7N+4hx6M863Go0AatPw4NbbQ3KVUr6R9mTNIJrs1ENWsuceVLPwEz7rw98aCePF xVD2Z/pdqg/jIihW7utGpZSNNamuIVXVZLmmBjjGogM9JJIVILo7A/YoIojDgkqQUprb PFKmr6w91MupzQL+Jx+WA6otM4SuSsXd5JNroGoJlOFrZj7Voh6H0rlLFyn83cSK2kgO b8wA== 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 :message-id:date:subject:cc:to:from; bh=4AktAWlHyh/XvnIsgQKRdgirgzh+KB81ZcTQwaZZ4j0=; b=im4mks58IQ4Jpb7CbMaJZ61iONQRDFtEpXk66VI5StPgl5Ts76GBTiX9kjCcrYJtcz wN9PPPZtvPMPfKmdGIIjWEqvhNqRAIVi6xtH0a2ZvtJn81UafxqwpUd4AQKfP5Jwpsf/ MfV5Ylem2LJLBQre09Kna/1bvAyELN+uJauytJBjI2ldjv3BcKPOciWPMN0yykBG/8xO TVUdqOAPT7RIaEBOJYP0/NA7e6kZOe5TksT+L1//tGnzu9YfJ9iLEXYIgeCDDKhTw2At SyjYPwmM6dha6o/Hp64vHpF/s09yunzeKW+lXdIBExwkAekh2MhJBsiSg64ZVJ7yvZrt 8beQ== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a20si2677414pfh.163.2018.11.13.10.06.02; Tue, 13 Nov 2018 10:06:32 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732350AbeKNEEm (ORCPT + 99 others); Tue, 13 Nov 2018 23:04:42 -0500 Received: from mga14.intel.com ([192.55.52.115]:15640 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726862AbeKNEEm (ORCPT ); Tue, 13 Nov 2018 23:04:42 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Nov 2018 10:05:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,229,1539673200"; d="scan'208";a="279519259" Received: from marshy.an.intel.com ([10.122.105.159]) by fmsmga005.fm.intel.com with ESMTP; 13 Nov 2018 10:05:28 -0800 From: richard.gong@linux.intel.com To: gregkh@linuxfoundation.org, catalin.marinas@arm.com, will.deacon@arm.com, dinguyen@kernel.org, robh+dt@kernel.org, mark.rutland@arm.com, atull@kernel.org, mdf@kernel.org, arnd@arndb.de, corbet@lwn.net Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-fpga@vger.kernel.org, linux-doc@vger.kernel.org, todd.riffel@intel.com, richard.gong@linux.intel.com, richard.gong@intel.com Subject: [PATCHv11 0/8] Add Intel Stratix10 FPGA manager and service layer Date: Tue, 13 Nov 2018 12:13:58 -0600 Message-Id: <1542132846-24168-1-git-send-email-richard.gong@linux.intel.com> X-Mailer: git-send-email 2.7.4 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 From: Richard Gong This is the 11th submission of Intel Stratix10 service layer and FPGA manager driver patches. Starting from 10th submission Stratix10 service layer driver .c file is moved to drivers/firmware, header files is moved to include/linux/firmware/intel. And other firmware interface includes Stratix10 service layer document. Stratix10 service layer patches have been reviewed internally by Alan Tull and other colleagues at Intel. Some features of the Intel Stratix10 SoC require a level of privilege higher than the kernel is granted. Such secure features include FPGA programming, remote status update, read and write the secure registers. In terms of the ARMv8 architecture, the kernel runs at Exception Level 1 (EL1), access to the features requires Exception Level 3 (EL3). The Intel Stratix10 service layer provides kernel APIs for drivers to request access to the secure features. The requests are queued and processed one by one. ARM’s SMCCC is used to pass the execution of the requests on to a secure monitor (EL3). Later the Intel Stratix10 service layer driver will be extended to provide services for QSPI, Crypto and warm reset. v2: add patches for FPGA manager, FPGA manager binding, dts and defconfig remove intel-service subdirectory and intel-service.h, move intel-smc.h and intel-service.c to driver/misc subdirectory. remove global variables. change service layer driver be 'default n'. correct SPDX markers. add timeout for do..while() loop. add kernel-doc for the functions and structs, correct multiline comments. replace kfifo_in and kfifo_out with kfifo_in_spinlocked and kfifo_out_spinlocked. rename struct intel_svc_data (at client header) to intel_svc_client_msg. rename struct intel_svc_private_mem to intel_svc_data. other corrections/changes from Intel internal code reviews. v3: change all exported functions with "intel_svc_" as the prefix. increase timeout values for claiming back submitted buffer(s). rename struct intel_command_reconfig_payload to struct intel_svc_command_reconfig_payload. add pr_err() to provide the error return value. change to put fpga_mgr node under firmware/svc node. change to FPGA manager to align the update of service client APIs, and the update of fpga_mgr device node. Other corrections/changes. v4: s/intel/stratix10/ on some variables, structs, functions, and file names intel-service.c -> stratix10-svc.c intel-smc.h -> stratix10-smc.h intel-service-client.h -> stratix10-svc-client.h. remove non-kernel-doc formatting. s/fpga-mgr@0/fpga-mgr/ to remove unit_address at fpga_mgr node. add Rob's Reviewed-by. add Richard's signed-off-by. v5: add a new API statix10_svc_done() which is called by service client when client request is completed or error occurs during request process. Which allows service layer to free its resources. remove dummy client from service layer client header and service layer source file. add Rob's Reviewed-by. add a new file stratix10-svc.rst and add that to driver-api/index.rst. kernel-doc fixes. v6: replace kthread_create_on_cpu() with kthread_create_on_node(). extend stratix_svc_send() to support service client which doesn't use memory allocated by service layer. add S10_RECONFIG_TIMEOUT. rename s/S10_BUF_TIMEOUT/S10_BUFFER_TIMEOUT/. fix service layer and FPGA manager Klocwork errors. v7: add remote status update client support. s/pr_debug/dev_dbg, s/dev_info/dev_dbg. add unlock buffer if s10_svc_send_msg() fails. add release channel if fpga_mgr_create() fails. handle invalid pointer at svc if the client passed an invalid name. v8: move stratix10-smc.h to include/linux from driver/misc. revert version 7 error code & smc function ID value changes at stratix10-smc.h. add a goto and common error handling at the end of fpga driver's. probe function. v9: remove a patch on defconfig for enable service layer and FPGA manager. resolve a issue found at git-bisect test. remove kernel-doc markups that aren't being built. v10:move stratix10-smc.h and stratix10-svc-client.h to include/linux/firmware/intel. move stratix10-svc.c to drivers/firmware. s/STRATIX10_SERVICE/INTEL_STRATIX10_SERVICE, fix a Klocwork error at service layer driver. s/stratix10_svc_command_reconfig_payload/ stratix10_svc_command_config_type. add stratix10 service layer document to other firmware interface. update path for the included header in Stratix10 FPGA manager driver. v11:add Acked-by Moritz Fischer add additional space at Kconfig file's help text fix a type in commit message from patch #8 Alan Tull (3): dt-bindings: fpga: add Stratix10 SoC FPGA manager binding arm64: dts: stratix10: add fpga manager and region fpga: add intel stratix10 soc fpga manager driver Richard Gong (5): dt-bindings, firmware: add Intel Stratix10 service layer binding arm64: dts: stratix10: add stratix10 service driver binding to base dtsi firmware: add Intel Stratix10 service layer driver Documentation: driver-api: add stratix10 service layer firmware: add remote status update client support .../bindings/firmware/intel,stratix10-svc.txt | 57 ++ .../bindings/fpga/intel-stratix10-soc-fpga-mgr.txt | 17 + .../driver-api/firmware/other_interfaces.rst | 30 + arch/arm64/boot/dts/altera/socfpga_stratix10.dtsi | 33 + drivers/firmware/Kconfig | 12 + drivers/firmware/Makefile | 1 + drivers/firmware/stratix10-svc.c | 1044 ++++++++++++++++++++ drivers/fpga/Kconfig | 6 + drivers/fpga/Makefile | 1 + drivers/fpga/stratix10-soc.c | 535 ++++++++++ include/linux/firmware/intel/stratix10-smc.h | 312 ++++++ .../linux/firmware/intel/stratix10-svc-client.h | 217 ++++ 12 files changed, 2265 insertions(+) create mode 100644 Documentation/devicetree/bindings/firmware/intel,stratix10-svc.txt create mode 100644 Documentation/devicetree/bindings/fpga/intel-stratix10-soc-fpga-mgr.txt create mode 100644 drivers/firmware/stratix10-svc.c create mode 100644 drivers/fpga/stratix10-soc.c create mode 100644 include/linux/firmware/intel/stratix10-smc.h create mode 100644 include/linux/firmware/intel/stratix10-svc-client.h -- 2.7.4