Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2576889pxb; Tue, 13 Apr 2021 05:27:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwxcJG1B5CigH7tu1M9DBAr7U24txGUA5l4uOg+L2nZ70j+cYgwkPiICJbxrdnZjPpveXGa X-Received: by 2002:a17:907:2d9f:: with SMTP id gt31mr32021567ejc.463.1618316874159; Tue, 13 Apr 2021 05:27:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618316874; cv=none; d=google.com; s=arc-20160816; b=cyzBNv5fAqrMK4ptT4iB3v9ucoDESb6UlF2A+DOKGY/SXxCCU/t+A0aKLpYZwnJXYY e5c2o6sLJFFwgZTu46NtNeULsL9DmvC5LESjFabnXRac1yh8yj2daT0A5yGNK0Za3LSX XJ1+3Bbpa6X8+YOjFGEc1dyw5mxad8jCxObFnZCQAvYP5Hso7QV00M7AEDr25VVN7f54 By6Cnzskk0J9oqckb46m4WZU+7TFHOq0kxXdhQwWNdrKqP877LYBnNDCwqqunx8G+2Bw vDkfFK/kRUFjVTGbDXa8nbYwNzk96cGwJRQJIAdCTjZp3PG0EU3u+GEyZGeaD269nB3J KA1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:ironport-sdr:ironport-sdr; bh=Ep1LACEMa7gIBKFYcNp2tabAxuCdTJkMqwaRx/saqN4=; b=BC2ygJdj7+06hSEw42/2cpoqoqciiPVcQ4slhzKkh1nZ3AWBY8H+nyeN5+lUal0jXx Tm6IlLysIqeyXJnFXbaelqD1MmWjdd/9RyhYhunqsuCK5qMS3Jz2zVvBFBC3duPrl83A qFj2uMyYKXDJ9JHLkTwEwY3XVTxkf2cgwJiZ8psc9jcp1dWDFJPz4RO7amM9qwISM5I2 67HJMkd7sRz8pl9Ulr+5KCQPk22d7I/3JGbAt5ywtFBbPST37s5hURL6qKsqr213TYtA EozdJxhmNppW628S+kx4RbwH73ovO03cNeJqfwbo0rKJsKDKDYDUo+Zy6VPQl/SdQqbS ZVfg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id re11si5986357ejb.590.2021.04.13.05.27.30; Tue, 13 Apr 2021 05:27:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S243237AbhDMBWh (ORCPT + 99 others); Mon, 12 Apr 2021 21:22:37 -0400 Received: from mga07.intel.com ([134.134.136.100]:37026 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235837AbhDMBWg (ORCPT ); Mon, 12 Apr 2021 21:22:36 -0400 IronPort-SDR: M0qZKOUr+WRb++ck8ErLZIT2URnQ/yVs8zmyNz2+4C7iUKAYV50NmtlFlv05pgtneyuTzb+5NU uRrsXDwwfpGw== X-IronPort-AV: E=McAfee;i="6200,9189,9952"; a="258286504" X-IronPort-AV: E=Sophos;i="5.82,216,1613462400"; d="scan'208";a="258286504" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2021 18:22:16 -0700 IronPort-SDR: WgKI/MS8CYjT9EOaRVP21ODABMPhTbLn5dBCj+QNV9HVq2OGrDGvG7FQxhumNKavry00KhFNST TAS7RGfcfWvg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,216,1613462400"; d="scan'208";a="521403712" Received: from marshy.an.intel.com (HELO [10.122.105.143]) ([10.122.105.143]) by fmsmga001.fm.intel.com with ESMTP; 12 Apr 2021 18:22:14 -0700 Subject: Re: [PATCHv5 0/7] Extend Intel service layer, FPGA manager and region To: Moritz Fischer , Tom Rix Cc: "Gong, Richard" , "gregkh@linuxfoundation.org" , "linux-fpga@vger.kernel.org" , "linux-kernel@vger.kernel.org" , russell.h.weight@intel.com References: <1612909233-13867-1-git-send-email-richard.gong@linux.intel.com> <496aa871-cfb0-faf4-4b1c-b53e56b58030@redhat.com> From: Richard Gong Message-ID: <8c0fcdde-540b-2ae3-01f2-30cdb87ac037@linux.intel.com> Date: Mon, 12 Apr 2021 20:41:42 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Moritz, On 3/28/21 12:20 PM, Moritz Fischer wrote: > Tom, > > On Sun, Mar 28, 2021 at 08:40:24AM -0700, Tom Rix wrote: >> >> On 3/27/21 11:09 AM, Moritz Fischer wrote: >>> Hi Richard, Russ, >>> >>> On Thu, Feb 25, 2021 at 01:07:14PM +0000, Gong, Richard wrote: >>>> Hi Moritz, >>>> >>>> Sorry for asking. >>>> >>>> When you have chance, can you help review the version 5 patchset submitted on 02/09/21? >>>> >>>> Regards, >>>> Richard >>>> >>>> -----Original Message----- >>>> From: richard.gong@linux.intel.com >>>> Sent: Tuesday, February 9, 2021 4:20 PM >>>> To: mdf@kernel.org; trix@redhat.com; gregkh@linuxfoundation.org; linux-fpga@vger.kernel.org; linux-kernel@vger.kernel.org >>>> Cc: Gong, Richard >>>> Subject: [PATCHv5 0/7] Extend Intel service layer, FPGA manager and region >>>> >>>> From: Richard Gong >>>> >>>> This is 5th submission of Intel service layer and FPGA patches, which includes the missing standalone patch in the 4th submission. >>>> >>>> This submission includes additional changes for Intel service layer driver to get the firmware version running at FPGA SoC device. Then FPGA manager driver, one of Intel service layer driver's client, can decide whether to handle the newly added bitstream authentication function based on the retrieved firmware version. So that we can maintain FPGA manager driver the back compatible. >>>> >>>> Bitstream authentication makes sure a signed bitstream has valid signatures. >>>> >>>> The customer sends the bitstream via FPGA framework and overlay, the firmware will authenticate the bitstream but not program the bitstream to device. If the authentication passes, the bitstream will be programmed into QSPI flash and will be expected to boot without issues. >>>> >>>> Extend Intel service layer, FPGA manager and region drivers to support the bitstream authentication feature. >>>> >>>> Richard Gong (7): >>>> firmware: stratix10-svc: reset COMMAND_RECONFIG_FLAG_PARTIAL to 0 >>>> firmware: stratix10-svc: add COMMAND_AUTHENTICATE_BITSTREAM flag >>>> firmware: stratix10-svc: extend SVC driver to get the firmware version >>>> fpga: fpga-mgr: add FPGA_MGR_BITSTREAM_AUTHENTICATE flag >>>> fpga: of-fpga-region: add authenticate-fpga-config property >>>> dt-bindings: fpga: add authenticate-fpga-config property >>>> fpga: stratix10-soc: extend driver for bitstream authentication >>>> >>>> .../devicetree/bindings/fpga/fpga-region.txt | 10 ++++ >>>> drivers/firmware/stratix10-svc.c | 12 ++++- >>>> drivers/fpga/of-fpga-region.c | 24 ++++++--- >>>> drivers/fpga/stratix10-soc.c | 62 +++++++++++++++++++--- >>>> include/linux/firmware/intel/stratix10-smc.h | 21 +++++++- >>>> .../linux/firmware/intel/stratix10-svc-client.h | 11 +++- >>>> include/linux/fpga/fpga-mgr.h | 3 ++ >>>> 7 files changed, 125 insertions(+), 18 deletions(-) >>>> >>>> -- >>>> 2.7.4 >>>> >>> Apologies for the epic delay in getting back to this, I took another >>> look at this patchset and Russ' patchset. >>> >>> TL;DR I'm not really a fan of using device-tree overlays for this (and >>> again, apologies, I should've voiced this earlier ...). >>> >>> Anyways, let's find a common API for this and Russ' work, they're trying >>> to achieve the same / similar thing, they should use the same API. >>> >>> I'd like to re-invetigate the possiblity to extend FPGA Manager with >>> 'secure update' ops that work for both these use-cases (and I susspect >>> hte XRT patchset will follow with a similar requirement, right after). >> >> The xrt patchset makes heavy use of device trees. >> >> What is the general guidance for device tree usage ? > > I'm not generally against using device tree, it has its place. To > describe hardware (and hardware *changes* with overlays) :) > > What I don't like about this particular implementation w.r.t device-tree > usage is that it uses DT overlays as a mechanism to program the flash -- > in place of having an API to do so. > > One could add device-nodes during the DT overlay application, while the > FPGA doesn't actually get programmed with a new runtime image -- meaning > live DT and actual hardware state diverged -- worst case it'd crash. > > So when roughly at the same time (from the same company even) we have two > patchsets that do similar things with radically different APIs I think > we should pause, and reflect on whether we can come up with something > that works for both :) > I discussed with Russ and studies his patches, came to realize that the work we had to accomplish was not same or similar. What I want to achieve is to verify the identity of the bitstream, which is like doing a "dry-run" to FPGA configuration. Performing FPGA configuration (full or partial) through the device tree overlay is a method widely used by our customers. Russ's approach utilizes a different user API which is a set of sysfs files. If we depart from device tree overlay, then the end-user must utilize 2 different mechanism or APIs (device tree overlay is used for full/partial configuration, and sysfs is used for bitstream authentication). Similarly low-level FPGA manager driver also needs to add additional codes. For the end-user the single and simple mechanism is always better choice, device tree overlay should be a better way to achieve that goal. Regards, Richard > TL;DR the firmware parts to authenticate the bitstream look fine to me, the > way we tie it into the FPGA region I'm not a fan of. > > - Moritz >