linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RESEND PATCHv2 0/5] Extend Intel service layer, FPGA manager and
@ 2020-12-14 14:39 richard.gong
  2020-12-14 14:39 ` [RESEND PATCHv2 1/5] firmware: stratix10-svc: add COMMAND_AUTHENTICATE_BITSTREAM flag richard.gong
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: richard.gong @ 2020-12-14 14:39 UTC (permalink / raw)
  To: gregkh, mdf, trix, linux-fpga, linux-kernel
  Cc: dinguyen, sridhar.rajagopal, richard.gong, Richard Gong

From: Richard Gong <richard.gong@intel.com>

This is 2nd submission of Intel service layer and FPGA patches.

The customer wants to verify that a FPGA bitstream can be started properly
before saving the bitstream to the QSPI flash memory.

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 (5):
  firmware: stratix10-svc: add COMMAND_AUTHENTICATE_BITSTREAM flag
  fpga: fpga-mgr: add FPGA_MGR_BITSTREM_AUTHENTICATION 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

 Documentation/devicetree/bindings/fpga/fpga-region.txt |  1 +
 drivers/fpga/of-fpga-region.c                          |  3 +++
 drivers/fpga/stratix10-soc.c                           |  3 +++
 include/linux/firmware/intel/stratix10-svc-client.h    | 11 ++++++++---
 include/linux/fpga/fpga-mgr.h                          | 13 ++++++++-----
 5 files changed, 23 insertions(+), 8 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [RESEND PATCHv2 1/5] firmware: stratix10-svc: add COMMAND_AUTHENTICATE_BITSTREAM flag
  2020-12-14 14:39 [RESEND PATCHv2 0/5] Extend Intel service layer, FPGA manager and richard.gong
@ 2020-12-14 14:39 ` richard.gong
  2020-12-14 14:39 ` [RESEND PATCHv2 2/5] fpga: fpga-mgr: add FPGA_MGR_BITSTREM_AUTHENTICATION flag richard.gong
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: richard.gong @ 2020-12-14 14:39 UTC (permalink / raw)
  To: gregkh, mdf, trix, linux-fpga, linux-kernel
  Cc: dinguyen, sridhar.rajagopal, richard.gong, Richard Gong

From: Richard Gong <richard.gong@intel.com>

Add COMMAND_AUTHENTICATE_BITSTREAM command flag for new added bitstream
authentication feature. Authenticating a bistream is to make sure a signed
bitstream has the valid signatures.

Except for the actual configuration of the device, the bitstream
authentication works the same way as FPGA configuration does. If the
authentication passes, the signed bitstream will be programmed into QSPI
flash memory and will be expected to boot without issues.

Clean up COMMAND_RECONFIG_FLAG_PARTIAL flag by resetting it to 0, which
aligns with the firmware settings.

Signed-off-by: Richard Gong <richard.gong@intel.com>
---
v2: new added
---
 include/linux/firmware/intel/stratix10-svc-client.h | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/include/linux/firmware/intel/stratix10-svc-client.h b/include/linux/firmware/intel/stratix10-svc-client.h
index a93d859..85463c8 100644
--- a/include/linux/firmware/intel/stratix10-svc-client.h
+++ b/include/linux/firmware/intel/stratix10-svc-client.h
@@ -51,12 +51,17 @@
 #define SVC_STATUS_NO_SUPPORT		6
 
 /**
- * Flag bit for COMMAND_RECONFIG
+ * Flag bit for COMMAND_RECONFIG, in bit number
  *
  * COMMAND_RECONFIG_FLAG_PARTIAL:
- * Set to FPGA configuration type (full or partial).
+ * Set for partial FPGA configuration.
+ *
+ * COMMAND_AUTHENTICATE_BITSTREAM:
+ * Set for bitstream authentication, which makes sure a signed bitstream
+ * has valid signatures before committing it to QSPI flash memory.
  */
-#define COMMAND_RECONFIG_FLAG_PARTIAL	1
+#define COMMAND_RECONFIG_FLAG_PARTIAL	0
+#define COMMAND_AUTHENTICATE_BITSTREAM	1
 
 /**
  * Timeout settings for service clients:
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RESEND PATCHv2 2/5] fpga: fpga-mgr: add FPGA_MGR_BITSTREM_AUTHENTICATION flag
  2020-12-14 14:39 [RESEND PATCHv2 0/5] Extend Intel service layer, FPGA manager and richard.gong
  2020-12-14 14:39 ` [RESEND PATCHv2 1/5] firmware: stratix10-svc: add COMMAND_AUTHENTICATE_BITSTREAM flag richard.gong
@ 2020-12-14 14:39 ` richard.gong
  2020-12-14 14:39 ` [RESEND PATCHv2 3/5] fpga: of-fpga-region: add authenticate-fpga-config property richard.gong
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: richard.gong @ 2020-12-14 14:39 UTC (permalink / raw)
  To: gregkh, mdf, trix, linux-fpga, linux-kernel
  Cc: dinguyen, sridhar.rajagopal, richard.gong, Richard Gong

From: Richard Gong <richard.gong@intel.com>

Add FPGA_MGR_BITSTREM_AUTHENTICATION flag for FPGA bitstream
authentication, which makes sure a signed bitstream has valid signatures.

Except for the actual configuration of the device, the authentication works
the same way as FPGA configuration does. If the authentication passes, the
bitstream will be programmed into QSPI flash and will be expected to boot
without issues.

Signed-off-by: Richard Gong <richard.gong@intel.com>
---
v2: align all FPGA_MGR_* flags
    update the commit messages
---
 include/linux/fpga/fpga-mgr.h | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/include/linux/fpga/fpga-mgr.h b/include/linux/fpga/fpga-mgr.h
index 2bc3030..4fb3400 100644
--- a/include/linux/fpga/fpga-mgr.h
+++ b/include/linux/fpga/fpga-mgr.h
@@ -67,12 +67,15 @@ enum fpga_mgr_states {
  * %FPGA_MGR_BITSTREAM_LSB_FIRST: SPI bitstream bit order is LSB first
  *
  * %FPGA_MGR_COMPRESSED_BITSTREAM: FPGA bitstream is compressed
+ *
+ * %FPGA_MGR_BITSTREM_AUTHENTICATION: do FPGA bitstream authentication only
  */
-#define FPGA_MGR_PARTIAL_RECONFIG	BIT(0)
-#define FPGA_MGR_EXTERNAL_CONFIG	BIT(1)
-#define FPGA_MGR_ENCRYPTED_BITSTREAM	BIT(2)
-#define FPGA_MGR_BITSTREAM_LSB_FIRST	BIT(3)
-#define FPGA_MGR_COMPRESSED_BITSTREAM	BIT(4)
+#define FPGA_MGR_PARTIAL_RECONFIG		BIT(0)
+#define FPGA_MGR_EXTERNAL_CONFIG		BIT(1)
+#define FPGA_MGR_ENCRYPTED_BITSTREAM		BIT(2)
+#define FPGA_MGR_BITSTREAM_LSB_FIRST		BIT(3)
+#define FPGA_MGR_COMPRESSED_BITSTREAM		BIT(4)
+#define FPGA_MGR_BITSTREM_AUTHENTICATION	BIT(5)
 
 /**
  * struct fpga_image_info - information specific to a FPGA image
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RESEND PATCHv2 3/5] fpga: of-fpga-region: add authenticate-fpga-config property
  2020-12-14 14:39 [RESEND PATCHv2 0/5] Extend Intel service layer, FPGA manager and richard.gong
  2020-12-14 14:39 ` [RESEND PATCHv2 1/5] firmware: stratix10-svc: add COMMAND_AUTHENTICATE_BITSTREAM flag richard.gong
  2020-12-14 14:39 ` [RESEND PATCHv2 2/5] fpga: fpga-mgr: add FPGA_MGR_BITSTREM_AUTHENTICATION flag richard.gong
@ 2020-12-14 14:39 ` richard.gong
  2020-12-14 14:39 ` [RESEND PATCHv2 4/5] dt-bindings: fpga: " richard.gong
  2020-12-14 14:40 ` [RESEND PATCHv2 5/5] fpga: stratix10-soc: extend driver for bitstream authentication richard.gong
  4 siblings, 0 replies; 6+ messages in thread
From: richard.gong @ 2020-12-14 14:39 UTC (permalink / raw)
  To: gregkh, mdf, trix, linux-fpga, linux-kernel
  Cc: dinguyen, sridhar.rajagopal, richard.gong, Richard Gong

From: Richard Gong <richard.gong@intel.com>

Add authenticate-fpga-config property to support FPGA bitstream
authentication, which makes sure a signed bitstream has valid signatures.

Signed-off-by: Richard Gong <richard.gong@intel.com>
---
v2: changed in alphabetical order
---
 drivers/fpga/of-fpga-region.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/fpga/of-fpga-region.c b/drivers/fpga/of-fpga-region.c
index e405309..3840883 100644
--- a/drivers/fpga/of-fpga-region.c
+++ b/drivers/fpga/of-fpga-region.c
@@ -219,6 +219,9 @@ static struct fpga_image_info *of_fpga_region_parse_ov(
 	info->overlay = overlay;
 
 	/* Read FPGA region properties from the overlay */
+	if (of_property_read_bool(overlay, "authenticate-fpga-config"))
+		info->flags |= FPGA_MGR_BITSTREM_AUTHENTICATION;
+
 	if (of_property_read_bool(overlay, "partial-fpga-config"))
 		info->flags |= FPGA_MGR_PARTIAL_RECONFIG;
 
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RESEND PATCHv2 4/5] dt-bindings: fpga: add authenticate-fpga-config property
  2020-12-14 14:39 [RESEND PATCHv2 0/5] Extend Intel service layer, FPGA manager and richard.gong
                   ` (2 preceding siblings ...)
  2020-12-14 14:39 ` [RESEND PATCHv2 3/5] fpga: of-fpga-region: add authenticate-fpga-config property richard.gong
@ 2020-12-14 14:39 ` richard.gong
  2020-12-14 14:40 ` [RESEND PATCHv2 5/5] fpga: stratix10-soc: extend driver for bitstream authentication richard.gong
  4 siblings, 0 replies; 6+ messages in thread
From: richard.gong @ 2020-12-14 14:39 UTC (permalink / raw)
  To: gregkh, mdf, trix, linux-fpga, linux-kernel
  Cc: dinguyen, sridhar.rajagopal, richard.gong, Richard Gong

From: Richard Gong <richard.gong@intel.com>

Add authenticate-fpga-config property for FPGA bitstream authentication,
which makes sure a signed bitstream has valid signatures.

Signed-off-by: Richard Gong <richard.gong@intel.com>
---
v2: put authenticate-fpga-config above partial-fpga-config
    update commit messages
---
 Documentation/devicetree/bindings/fpga/fpga-region.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/fpga/fpga-region.txt b/Documentation/devicetree/bindings/fpga/fpga-region.txt
index e811cf8..d0d3234 100644
--- a/Documentation/devicetree/bindings/fpga/fpga-region.txt
+++ b/Documentation/devicetree/bindings/fpga/fpga-region.txt
@@ -182,6 +182,7 @@ Optional properties:
 	This property is optional if the FPGA Manager handles the bridges.
         If the fpga-region is  the child of a fpga-bridge, the list should not
         contain the parent bridge.
+- authenticate-fpga-config : boolean, set if do bitstream authentication only.
 - partial-fpga-config : boolean, set if partial reconfiguration is to be done,
 	otherwise full reconfiguration is done.
 - external-fpga-config : boolean, set if the FPGA has already been configured
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [RESEND PATCHv2 5/5] fpga: stratix10-soc: extend driver for bitstream authentication
  2020-12-14 14:39 [RESEND PATCHv2 0/5] Extend Intel service layer, FPGA manager and richard.gong
                   ` (3 preceding siblings ...)
  2020-12-14 14:39 ` [RESEND PATCHv2 4/5] dt-bindings: fpga: " richard.gong
@ 2020-12-14 14:40 ` richard.gong
  4 siblings, 0 replies; 6+ messages in thread
From: richard.gong @ 2020-12-14 14:40 UTC (permalink / raw)
  To: gregkh, mdf, trix, linux-fpga, linux-kernel
  Cc: dinguyen, sridhar.rajagopal, richard.gong, Richard Gong

From: Richard Gong <richard.gong@intel.com>

Extend FPGA manager driver to support FPGA bitstream authentication on
Intel SocFPGA platforms.

Signed-off-by: Richard Gong <richard.gong@intel.com>
---
v2: use flag defined in stratix10-svc driver
---
 drivers/fpga/stratix10-soc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/fpga/stratix10-soc.c b/drivers/fpga/stratix10-soc.c
index 657a70c..b77067e 100644
--- a/drivers/fpga/stratix10-soc.c
+++ b/drivers/fpga/stratix10-soc.c
@@ -186,6 +186,9 @@ static int s10_ops_write_init(struct fpga_manager *mgr,
 	if (info->flags & FPGA_MGR_PARTIAL_RECONFIG) {
 		dev_dbg(dev, "Requesting partial reconfiguration.\n");
 		ctype.flags |= BIT(COMMAND_RECONFIG_FLAG_PARTIAL);
+	} else if (info->flags & FPGA_MGR_BITSTREM_AUTHENTICATION) {
+		dev_dbg(dev, "Requesting bitstream authentication.\n");
+		ctype.flags |= BIT(COMMAND_AUTHENTICATE_BITSTREAM);
 	} else {
 		dev_dbg(dev, "Requesting full reconfiguration.\n");
 	}
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-12-14 14:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-14 14:39 [RESEND PATCHv2 0/5] Extend Intel service layer, FPGA manager and richard.gong
2020-12-14 14:39 ` [RESEND PATCHv2 1/5] firmware: stratix10-svc: add COMMAND_AUTHENTICATE_BITSTREAM flag richard.gong
2020-12-14 14:39 ` [RESEND PATCHv2 2/5] fpga: fpga-mgr: add FPGA_MGR_BITSTREM_AUTHENTICATION flag richard.gong
2020-12-14 14:39 ` [RESEND PATCHv2 3/5] fpga: of-fpga-region: add authenticate-fpga-config property richard.gong
2020-12-14 14:39 ` [RESEND PATCHv2 4/5] dt-bindings: fpga: " richard.gong
2020-12-14 14:40 ` [RESEND PATCHv2 5/5] fpga: stratix10-soc: extend driver for bitstream authentication richard.gong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).