From patchwork Mon Nov 1 10:47:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Suvorov X-Patchwork-Id: 1549124 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=foundries.io header.i=@foundries.io header.a=rsa-sha256 header.s=google header.b=PxKnCrnN; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HjVB82W4Qz9sVc for ; Mon, 1 Nov 2021 21:48:16 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C0829831C9; Mon, 1 Nov 2021 11:48:00 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=foundries.io Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=foundries.io header.i=@foundries.io header.b="PxKnCrnN"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 6EC13835DB; Mon, 1 Nov 2021 11:47:57 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id DACFC83383 for ; Mon, 1 Nov 2021 11:47:49 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=foundries.io Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=oleksandr.suvorov@foundries.io Received: by mail-lf1-x12f.google.com with SMTP id p16so35558456lfa.2 for ; Mon, 01 Nov 2021 03:47:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foundries.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ue6SLPMtdPHHeZExVcwjO6uq3ujU2xmzD4wA7xNY2wE=; b=PxKnCrnNVGKbFUe9P6Wd8OpfhKm33ugal20fikFzwZwDObshTUJYD1Z+LdENZd2K7Z LlxV2NuHC+oGFthFHHAf5kpSjUKVEJtEMLeGFssV0ETQLS72xxR4DK9HOfEl/X7tHjaW 5UBIFvhYkRnptjtFvHs13fQNQQa6KzaXGlZG6xOeE46LFIPiEB0tj6/3uo0d2jxFGlxX SSl2vr6O3bKGZ3brcdpaVQrIwfaPlKgJth2BemcbQ5VM03r5dOz66dNxcL6yiWOKTM4T VD3jcPpXeQOUURp3d6JKID8nJKGbd3yXCjb5MPP9hffE8PraKRRJ2yD3MVevilBQIP0B d/DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ue6SLPMtdPHHeZExVcwjO6uq3ujU2xmzD4wA7xNY2wE=; b=5VYF7wUdzDi6QdLE1DQeT8s6yY46qf7unyJ0NK+0KfW5nONj51wrCBv2z6NeElMo64 pYNFOOzmmMXLNAl4NyV0mdzf31D8gxZYIJu4yeV1ea+lkqIPHlqHLOg6HzIUaRPG0M9j oDamTtpQRrAiiBlmHjk08pRRsB/U1jpxaSU892zXB0qo/ahm+fB6OJohbOSYW2miYHQk nMz0qFWatG9vMI8KyM0htYR2yhjwxgiGE0WJj+FOUwtizHwS9XE8z2uvOHcRGjEyif9+ l1WMcdFx07Hwb8DnioVyYWs1jEtLohWiACyyPXeRFYraDo238zuny7mTjr+VfKn+UILy cJ0g== X-Gm-Message-State: AOAM533Czo2F3vuR90fzTEASEdbX/RncNT3vcIMGdJEcJMYzjbHhsZj8 VFPGZadIhy+MNFOLLr1grehQWmDSXJSEBw== X-Google-Smtp-Source: ABdhPJxXZ9SO3H0LlqriVvdmlP+66HyCCUAdjPr9Om3xYI8oI0GdvVlNJMYvrx6yf0H9bWfZlhzFHA== X-Received: by 2002:a05:6512:e83:: with SMTP id bi3mr6748057lfb.479.1635763668860; Mon, 01 Nov 2021 03:47:48 -0700 (PDT) Received: from cryobook.bearlog ([83.218.251.13]) by smtp.gmail.com with ESMTPSA id q5sm863555lfr.12.2021.11.01.03.47.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Nov 2021 03:47:48 -0700 (PDT) From: Oleksandr Suvorov To: u-boot@lists.denx.de Cc: Ricardo Salveti , Jorge Ramirez-Ortiz , Igor Opaniuk , Oleksandr Suvorov , Aymen Sghaier , Bin Meng , Heinrich Schuchardt , Kory Maincent , Michal Simek , Patrick Delaunay , Peng Fan , Simon Glass Subject: [PATCH v2 1/4] fpga: add option for loading FPGA secure bitstreams Date: Mon, 1 Nov 2021 12:47:39 +0200 Message-Id: <20211101104742.69908-2-oleksandr.suvorov@foundries.io> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211101104742.69908-1-oleksandr.suvorov@foundries.io> References: <20211101104742.69908-1-oleksandr.suvorov@foundries.io> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean It allows using this feature without enabling the "fpga loads" command. Signed-off-by: Oleksandr Suvorov Acked-by: Michal Simek --- (no changes since v1) cmd/Kconfig | 3 ++- drivers/fpga/Kconfig | 14 ++++++++++++++ drivers/fpga/fpga.c | 2 +- drivers/fpga/xilinx.c | 2 +- drivers/fpga/zynqmppl.c | 4 ++-- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cmd/Kconfig b/cmd/Kconfig index 5b30b13e43..270d1765d3 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -949,8 +949,9 @@ config CMD_FPGA_LOADP a partial bitstream. config CMD_FPGA_LOAD_SECURE - bool "fpga loads - loads secure bitstreams (Xilinx only)" + bool "fpga loads - loads secure bitstreams" depends on CMD_FPGA + select FPGA_LOAD_SECURE help Enables the fpga loads command which is used to load secure (authenticated or encrypted or both) bitstreams on to FPGA. diff --git a/drivers/fpga/Kconfig b/drivers/fpga/Kconfig index dc0b3dd31b..262f95a252 100644 --- a/drivers/fpga/Kconfig +++ b/drivers/fpga/Kconfig @@ -85,4 +85,18 @@ config FPGA_ZYNQPL Enable FPGA driver for loading bitstream in BIT and BIN format on Xilinx Zynq devices. +config FPGA_LOAD_SECURE + bool "Enable loading secure bitstreams" + depends on FPGA + help + Enables the fpga loads() functions that are used to load secure + (authenticated or encrypted or both) bitstreams on to FPGA. + +config SPL_FPGA_LOAD_SECURE + bool "Enable loading secure bitstreams for SPL" + depends on FPGA + help + Enables the fpga loads() functions that are used to load secure + (authenticated or encrypted or both) bitstreams on to FPGA. + endmenu diff --git a/drivers/fpga/fpga.c b/drivers/fpga/fpga.c index fe3dfa1233..3b0a44b242 100644 --- a/drivers/fpga/fpga.c +++ b/drivers/fpga/fpga.c @@ -220,7 +220,7 @@ int fpga_fsload(int devnum, const void *buf, size_t size, } #endif -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) int fpga_loads(int devnum, const void *buf, size_t size, struct fpga_secure_info *fpga_sec_info) { diff --git a/drivers/fpga/xilinx.c b/drivers/fpga/xilinx.c index cbebefb55f..6bc1bc491f 100644 --- a/drivers/fpga/xilinx.c +++ b/drivers/fpga/xilinx.c @@ -172,7 +172,7 @@ int xilinx_loadfs(xilinx_desc *desc, const void *buf, size_t bsize, } #endif -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) int xilinx_loads(xilinx_desc *desc, const void *buf, size_t bsize, struct fpga_secure_info *fpga_sec_info) { diff --git a/drivers/fpga/zynqmppl.c b/drivers/fpga/zynqmppl.c index 6b394869db..8ff12bf50a 100644 --- a/drivers/fpga/zynqmppl.c +++ b/drivers/fpga/zynqmppl.c @@ -245,7 +245,7 @@ static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize, return ret; } -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) && !defined(CONFIG_SPL_BUILD) +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) static int zynqmp_loads(xilinx_desc *desc, const void *buf, size_t bsize, struct fpga_secure_info *fpga_sec_info) { @@ -306,7 +306,7 @@ static int zynqmp_pcap_info(xilinx_desc *desc) struct xilinx_fpga_op zynqmp_op = { .load = zynqmp_load, -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) && !defined(CONFIG_SPL_BUILD) +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) .loads = zynqmp_loads, #endif .info = zynqmp_pcap_info, From patchwork Mon Nov 1 10:47:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Suvorov X-Patchwork-Id: 1549125 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=foundries.io header.i=@foundries.io header.a=rsa-sha256 header.s=google header.b=WQjfsFnh; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HjVBM1Fbkz9sVc for ; Mon, 1 Nov 2021 21:48:27 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 5F28C835E3; Mon, 1 Nov 2021 11:48:08 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=foundries.io Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=foundries.io header.i=@foundries.io header.b="WQjfsFnh"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 50BA3835D4; Mon, 1 Nov 2021 11:47:58 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 45DA38352B for ; Mon, 1 Nov 2021 11:47:51 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=foundries.io Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=oleksandr.suvorov@foundries.io Received: by mail-lj1-x22d.google.com with SMTP id 17so25563638ljq.0 for ; Mon, 01 Nov 2021 03:47:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foundries.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iBBlV8jT4itKQh6k3SWHR+fBLoVGQOQUS+VabPlQUXA=; b=WQjfsFnhT7RbNU+9tHX+NKUWvCd9omdUOrbR57gD0GdaixrLPc7bqseoSzicsSqXLC Y4dMYURP0UeHcCl+KUH4Vic73854og/VCYX2ZP0cBL8QpqXvQVANbIKjFk/LAJnQKncK +y/D2giaNIfT9nozhN9Mo+ghLB9zSOs/23sFeHU6DjW5DyAi8HnXdYrD9Ldw+e1Ypptw LHnP4mIxT0WLNMr5YbJX/5EXVTKaUTQ5TdZeGz8yYl7bfn76ta4rgyFLBlah6LzkGnZY m7xngxrq8vzFTl8Vxuh5RJ5gK89mJcL7kQpazpt3kCqaAt6S+xA30MpWnV3g8UOtIZcK MG4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iBBlV8jT4itKQh6k3SWHR+fBLoVGQOQUS+VabPlQUXA=; b=8BpTXM28laWF0mAvrtjHRKxJbdk6qEJCB8r7slsdHURknxvi4Z5LPiKUqC2XfL9NfK RgeXWQ/BvdgU035MYu0RA2XScfWfY20JLb5c4D6G9xYsC9SnnUDZoLxRFTuUAVW/iZhQ lQ8ZCvUH8TTGm3RBOLSjG0mATAULm2vqFKUpMhzTgMgRjenkyfm1FZ27Jv1mF9HEO7NI iTbiKOxYILjZ7kHwqzPQOy4xLlr/Ep6qW2sUPVgXPv4HVIQF8JLmMtyVow1/rSWstdIU Ib7ekotZuR9fjse3ckwIcD2qwN+JV/RSHoLb1QFqx5TAs9Ol4kffLWLPfPKpatSLWuy6 DLLA== X-Gm-Message-State: AOAM5336tRn5LtP1nsyaWoZumVrRU20Xn0iGHvvvYkvr4lP75stGDxJM BduwAevyfAmVwcaMqlV1Z+izGOSi3TAYAA== X-Google-Smtp-Source: ABdhPJxNdH5TTQ13so6YgZ1QoH5LRNay0E2DWzk07hoDfgs3+qUigINWCNFD1/UPggEsznsRrXinNA== X-Received: by 2002:a05:651c:1024:: with SMTP id w4mr10303529ljm.201.1635763670317; Mon, 01 Nov 2021 03:47:50 -0700 (PDT) Received: from cryobook.bearlog ([83.218.251.13]) by smtp.gmail.com with ESMTPSA id q5sm863555lfr.12.2021.11.01.03.47.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Nov 2021 03:47:49 -0700 (PDT) From: Oleksandr Suvorov To: u-boot@lists.denx.de Cc: Ricardo Salveti , Jorge Ramirez-Ortiz , Igor Opaniuk , Oleksandr Suvorov , Aymen Sghaier , Bin Meng , Heinrich Schuchardt , Kory Maincent , Michal Simek , Patrick Delaunay , Peng Fan , Simon Glass Subject: [PATCH v2 2/4] cmd: fpga: Separating the support of fpga loads Date: Mon, 1 Nov 2021 12:47:40 +0200 Message-Id: <20211101104742.69908-3-oleksandr.suvorov@foundries.io> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211101104742.69908-2-oleksandr.suvorov@foundries.io> References: <20211101104742.69908-1-oleksandr.suvorov@foundries.io> <20211101104742.69908-2-oleksandr.suvorov@foundries.io> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean This patch allows enabling support of "fpga lodas command which loads secure bitstreams (authenticated or encrypted, or both) independently in SPL and in u-boot. Signed-off-by: Oleksandr Suvorov --- (no changes since v1) cmd/Kconfig | 9 +++++++++ cmd/fpga.c | 8 ++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cmd/Kconfig b/cmd/Kconfig index 270d1765d3..3702a022e6 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -956,6 +956,15 @@ config CMD_FPGA_LOAD_SECURE Enables the fpga loads command which is used to load secure (authenticated or encrypted or both) bitstreams on to FPGA. +config CMD_SPL_FPGA_LOAD_SECURE + bool "fpga loads - loads secure bitstreams for SPL" + depends on CMD_FPGA && CMD_SPL + select SPL_FPGA_LOAD_SECURE + help + Enables the fpga loads command which is used to load secure + (authenticated or encrypted or both) bitstreams on to FPGA from + SPL. + config CMD_FPGAD bool "fpgad - dump FPGA registers" help diff --git a/cmd/fpga.c b/cmd/fpga.c index 3fdd0b35e8..9a14618660 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -67,7 +67,7 @@ static int do_fpga_check_params(long *dev, long *fpga_data, size_t *data_size, return 0; } -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) +#if CONFIG_IS_ENABLED(CMD_FPGA_LOAD_SECURE) int do_fpga_loads(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { size_t data_size = 0; @@ -382,7 +382,7 @@ static struct cmd_tbl fpga_commands[] = { #if defined(CONFIG_CMD_FPGA_LOADMK) U_BOOT_CMD_MKENT(loadmk, 2, 1, do_fpga_loadmk, "", ""), #endif -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) +#if CONFIG_IS_ENABLED(CMD_FPGA_LOAD_SECURE) U_BOOT_CMD_MKENT(loads, 6, 1, do_fpga_loads, "", ""), #endif }; @@ -416,7 +416,7 @@ static int do_fpga_wrapper(struct cmd_tbl *cmdtp, int flag, int argc, return cmd_process_error(fpga_cmd, ret); } -#if defined(CONFIG_CMD_FPGA_LOADFS) || defined(CONFIG_CMD_FPGA_LOAD_SECURE) +#if defined(CONFIG_CMD_FPGA_LOADFS) || CONFIG_IS_ENABLED(CMD_FPGA_LOAD_SECURE) U_BOOT_CMD(fpga, 9, 1, do_fpga_wrapper, #else U_BOOT_CMD(fpga, 6, 1, do_fpga_wrapper, @@ -451,7 +451,7 @@ U_BOOT_CMD(fpga, 6, 1, do_fpga_wrapper, "\tsubimage unit name in the form of addr:" #endif #endif -#if defined(CONFIG_CMD_FPGA_LOAD_SECURE) +#if CONFIG_IS_ENABLED(CMD_FPGA_LOAD_SECURE) "Load encrypted bitstream (Xilinx only)\n" " loads [dev] [address] [size] [auth-OCM-0/DDR-1/noauth-2]\n" " [enc-devkey(0)/userkey(1)/nenc(2) [Userkey address]\n" From patchwork Mon Nov 1 10:47:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Suvorov X-Patchwork-Id: 1549127 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=foundries.io header.i=@foundries.io header.a=rsa-sha256 header.s=google header.b=G4txhrDl; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HjVBf6LCCz9sVc for ; Mon, 1 Nov 2021 21:48:42 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 348E1835DD; Mon, 1 Nov 2021 11:48:16 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=foundries.io Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=foundries.io header.i=@foundries.io header.b="G4txhrDl"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0743A83323; Mon, 1 Nov 2021 11:48:00 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9780481BC8 for ; Mon, 1 Nov 2021 11:47:52 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=foundries.io Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=oleksandr.suvorov@foundries.io Received: by mail-lj1-x229.google.com with SMTP id 17so25563713ljq.0 for ; Mon, 01 Nov 2021 03:47:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foundries.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=py499LbCMvMiU61GQVON5tb4ETjrpYr2k+m3e7dCZ34=; b=G4txhrDlPFfG1mBPe2KvkRHlHtpFYI+HQJsstYDv7ZfUn1SVvAPhKw7upfwwu7QxcD uPjyx/45urIozy9mZoceZc0kxZpB5a6ChBIgHcypGlv2P5Q8Z1+qA8YIxVuHoXJDHRTg r3P0KE0oI8xUIqM/+6Zzc4CQnSyhOaTkbLHIiNt03TpGvw6A9gP86dQ+oiI9jiGV0Fb0 hWxpULHfGKgvpW9lNI5RxemhXfh9oNeUr5eIQFZ1xU5zqe/5hXW8tpx7Ptrz5WKzoj44 053/d6UVtEroboUcPaaPiQVwvL1YEhZMTaiTTtj3eiDBaFQd1VI+1/Cny8WHKcqJvQyD OzYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=py499LbCMvMiU61GQVON5tb4ETjrpYr2k+m3e7dCZ34=; b=1kKmEujVmrdvfJ5tYTJMMdM8kS9BjrKVYr+609T+1M+EjOA1cbmf2zV9IhABdx5YKA RBm7VnK1dj0XDOAqVbejIhlS77KVUMng8p8w6K5s1jXVnLU4AIu4R+E1F8q9bdtmX92b tKBbH2fnh/jpddkVHZRJjaSO17Pw8v+zqS32CDd0Iw37UkmwqJjYac3meAdtwzsXjQPq faR3MkQv5wJ5/wKtqetriE+Pu+5YG9BN2beV6NS3stcYtTuL/NStk4/mKJ9/Xz6kEFUr cd7WFcxR0PKOOeacbl5R+16UdZlQS/bzaxj5YAuLfkK2z/+/rzDBseFn+Ruf1Iks0AnA eI6Q== X-Gm-Message-State: AOAM530Xv5hhvlMgfDFBIT/IOGW8f8aLLqNKSJ/f3Vl+l2oVIXKRblF1 ODKpXD7ToFGqC/VjlMy8QtrGkMJSf6b/Rw== X-Google-Smtp-Source: ABdhPJx5iK0GK+cczcxrQym8BZ+EhMcXs5n4qaIU1jKUdEp92WQKRrEe0PYqTxzx/cQwWM8/mjEEkA== X-Received: by 2002:a2e:a237:: with SMTP id i23mr168243ljm.203.1635763671682; Mon, 01 Nov 2021 03:47:51 -0700 (PDT) Received: from cryobook.bearlog ([83.218.251.13]) by smtp.gmail.com with ESMTPSA id q5sm863555lfr.12.2021.11.01.03.47.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Nov 2021 03:47:51 -0700 (PDT) From: Oleksandr Suvorov To: u-boot@lists.denx.de Cc: Ricardo Salveti , Jorge Ramirez-Ortiz , Igor Opaniuk , Oleksandr Suvorov , Alexandru Gagniuc , Heiko Schocher , Michal Simek , Philippe Reynes , Simon Glass Subject: [PATCH v2 3/4] fpga: add fit_fpga_load function Date: Mon, 1 Nov 2021 12:47:41 +0200 Message-Id: <20211101104742.69908-4-oleksandr.suvorov@foundries.io> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211101104742.69908-3-oleksandr.suvorov@foundries.io> References: <20211101104742.69908-1-oleksandr.suvorov@foundries.io> <20211101104742.69908-2-oleksandr.suvorov@foundries.io> <20211101104742.69908-3-oleksandr.suvorov@foundries.io> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Introduce a function which passes an fpga compatible string from FIT images to FPGA drivers. This lets the different implementations decide how to handle it. Some code of Jorge Ramirez-Ortiz is reused. Signed-off-by: Oleksandr Suvorov --- (no changes since v1) common/spl/spl_fit.c | 6 ++---- drivers/fpga/fpga.c | 26 ++++++++++++++++++++++++-- include/fpga.h | 4 ++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index 5fe0273d66..bd29e8c59d 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -580,11 +580,9 @@ static int spl_fit_upload_fpga(struct spl_fit_info *ctx, int node, compatible = fdt_getprop(ctx->fit, node, "compatible", NULL); if (!compatible) warn_deprecated("'fpga' image without 'compatible' property"); - else if (strcmp(compatible, "u-boot,fpga-legacy")) - printf("Ignoring compatible = %s property\n", compatible); - ret = fpga_load(0, (void *)fpga_image->load_addr, fpga_image->size, - BIT_FULL); + ret = fit_fpga_load(0, (void *)fpga_image->load_addr, fpga_image->size, + BIT_FULL, compatible); if (ret) { printf("%s: Cannot load the image to the FPGA\n", __func__); return ret; diff --git a/drivers/fpga/fpga.c b/drivers/fpga/fpga.c index 3b0a44b242..e4b5dd392e 100644 --- a/drivers/fpga/fpga.c +++ b/drivers/fpga/fpga.c @@ -249,15 +249,31 @@ int fpga_loads(int devnum, const void *buf, size_t size, } #endif +int fit_fpga_load(int devnum, const void *buf, size_t bsize, + bitstream_type bstype, const char *compatible) +{ + fpga_desc *desc = (fpga_desc *) fpga_validate(devnum, buf, bsize, + (char *)__func__); + + if (!desc) + return FPGA_FAIL; + /* + * Store the compatible string to proceed it in underlying + * functions + */ + desc->compatible = (char *)compatible; + + return fpga_load(devnum, buf, bsize, bstype); +} /* - * Generic multiplexing code + * Generic multiplexing code: + * Each architecture must handle the mandatory FPGA DT compatible property. */ int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype) { int ret_val = FPGA_FAIL; /* assume failure */ const fpga_desc *desc = fpga_validate(devnum, buf, bsize, (char *)__func__); - if (desc) { switch (desc->devtype) { case fpga_xilinx: @@ -270,6 +286,9 @@ int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype) break; case fpga_altera: #if defined(CONFIG_FPGA_ALTERA) + if (strcmp(desc->compatible, "u-boot,fpga-legacy")) + printf("Ignoring compatible = %s property\n", + desc->compatible); ret_val = altera_load(desc->devdesc, buf, bsize); #else fpga_no_sup((char *)__func__, "Altera devices"); @@ -277,6 +296,9 @@ int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype) break; case fpga_lattice: #if defined(CONFIG_FPGA_LATTICE) + if (strcmp(desc->compatible, "u-boot,fpga-legacy")) + printf("Ignoring compatible = %s property\n", + desc->compatible); ret_val = lattice_load(desc->devdesc, buf, bsize); #else fpga_no_sup((char *)__func__, "Lattice devices"); diff --git a/include/fpga.h b/include/fpga.h index ec5144334d..2891f32106 100644 --- a/include/fpga.h +++ b/include/fpga.h @@ -35,6 +35,7 @@ typedef enum { /* typedef fpga_type */ typedef struct { /* typedef fpga_desc */ fpga_type devtype; /* switch value to select sub-functions */ void *devdesc; /* real device descriptor */ + char *compatible; /* device compatible string */ } fpga_desc; /* end, typedef fpga_desc */ typedef struct { /* typedef fpga_desc */ @@ -63,6 +64,9 @@ int fpga_add(fpga_type devtype, void *desc); int fpga_count(void); const fpga_desc *const fpga_get_desc(int devnum); int fpga_is_partial_data(int devnum, size_t img_len); +/* the DT compatible property must be handled by the different FPGA archs */ +int fit_fpga_load(int devnum, const void *buf, size_t bsize, + bitstream_type bstype, const char *compatible); int fpga_load(int devnum, const void *buf, size_t bsize, bitstream_type bstype); int fpga_fsload(int devnum, const void *buf, size_t size, From patchwork Mon Nov 1 10:47:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksandr Suvorov X-Patchwork-Id: 1549126 X-Patchwork-Delegate: monstr@monstr.eu Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=foundries.io header.i=@foundries.io header.a=rsa-sha256 header.s=google header.b=E16CpOvs; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4HjVBT5ktqz9sVc for ; Mon, 1 Nov 2021 21:48:33 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id DDF1B835F7; Mon, 1 Nov 2021 11:48:11 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=foundries.io Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=foundries.io header.i=@foundries.io header.b="E16CpOvs"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id F20A283383; Mon, 1 Nov 2021 11:47:58 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id DBAD583323 for ; Mon, 1 Nov 2021 11:47:53 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=foundries.io Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=oleksandr.suvorov@foundries.io Received: by mail-lf1-x136.google.com with SMTP id bi35so35453331lfb.9 for ; Mon, 01 Nov 2021 03:47:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foundries.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Oemf7GvQIiQpFDheNn+Qk1q2A2hqq0WRwo5+XbucVwU=; b=E16CpOvsK3RaMwMbCuT49eLoZGLhX9OwJ0FUzB6AbybnhTAOA5EhpcMr6j1WzYfZDt nyrZiaJQqZ9SZSg+UX4zGKMdY2/VT3cGQWX6iWXUhAx660Y8TOEcSd71EeuZjBU4iwWA hItP7KzsAJDPo8zRkh8g2qH2XpI/CLy924iE7cfmtl3HEu/P5nbeQxliVjZQuAV5X9On MeFVQ4icOSumglRN6uiTIjnvr8Oyvn/9NkoK6XFctkhYj4X9KVo24iN6OhtmrBRr3c6J C4a8vb03wrgxjwlf2B2NqiYTtNzXZKmr++xM7v2Bj/dWWIeriLzPZWKARmQZLYnJVWCP d6XA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Oemf7GvQIiQpFDheNn+Qk1q2A2hqq0WRwo5+XbucVwU=; b=lcnk2DHgaOO1sF7NbB18lNjtaGhoWd5l5oXYMeUFy2a7GlBEU5AqvPeTOQVXszgQ+A zwTueJdJKsEIKatLW2Oq1eWWws14VH8h7+MY+CeaxpT02i9+5pX3CEYdiV3gQc0aOpU3 95PXjrXdWbGUFRBEDkDs7vtqO2i3GVBxhPZEOknOJ1r+++XRo9jE/8cNEYE0ks4IONEX RIDSYLW0OxgEIo/CxqEt/FnC0zn+gOp/R21ELCjk8TCPmie+f3uLEV+CM1v5HmqpnezM OSiFA/to7L/o6b4+nezOOdeFDtxbUuPHjUDraiQcNljpE3GT/zf2QQUB4tbkZ+dqJCv+ 9PQg== X-Gm-Message-State: AOAM532IZkvSbCXAwsDjlWfMdPV0mDalEi9Z/+QmQD60B4gp06Pq5HZ/ Nf6PW8WIADiYxVoQKhVbFfFDJcWrBsoMkw== X-Google-Smtp-Source: ABdhPJwkAHTXRjr7yfrUrXcuDITTOqjP45i8KFfP/dTzN/kT8xGiUmi47IrFWX8w+QZeW9RTRqAyyw== X-Received: by 2002:ac2:4bc1:: with SMTP id o1mr25764229lfq.553.1635763672815; Mon, 01 Nov 2021 03:47:52 -0700 (PDT) Received: from cryobook.bearlog ([83.218.251.13]) by smtp.gmail.com with ESMTPSA id q5sm863555lfr.12.2021.11.01.03.47.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Nov 2021 03:47:52 -0700 (PDT) From: Oleksandr Suvorov To: u-boot@lists.denx.de Cc: Ricardo Salveti , Jorge Ramirez-Ortiz , Igor Opaniuk , Oleksandr Suvorov , Michal Simek Subject: [PATCH v2 4/4] fpga: zynqmp: support loading authenticated images Date: Mon, 1 Nov 2021 12:47:42 +0200 Message-Id: <20211101104742.69908-5-oleksandr.suvorov@foundries.io> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211101104742.69908-4-oleksandr.suvorov@foundries.io> References: <20211101104742.69908-1-oleksandr.suvorov@foundries.io> <20211101104742.69908-2-oleksandr.suvorov@foundries.io> <20211101104742.69908-3-oleksandr.suvorov@foundries.io> <20211101104742.69908-4-oleksandr.suvorov@foundries.io> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Add supporting new compatible string "u-boot,zynqmp-fpga-ddrauth" to handle loading authenticated images (DDR). Based on solution by Jorge Ramirez-Ortiz Signed-off-by: Oleksandr Suvorov Co-developed-by: Ricardo Salveti Signed-off-by: Ricardo Salveti Tested-by: Ricardo Salveti --- Changes in v2: - add function fit_fpga_load() to simplify calls of fpga_load() from contexts without a compatible attribute. - move all ZynqMP-specific logic to drivers/fpga/zynqmppl.c - prepare for passing a "compatible" FDT property to any fpga driver. drivers/fpga/zynqmppl.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/fpga/zynqmppl.c b/drivers/fpga/zynqmppl.c index 8ff12bf50a..ce25381890 100644 --- a/drivers/fpga/zynqmppl.c +++ b/drivers/fpga/zynqmppl.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -209,6 +210,26 @@ static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize, u32 buf_lo, buf_hi; u32 ret_payload[PAYLOAD_ARG_CNT]; bool xilfpga_old = false; + fpga_desc *fdesc = container_of((void *)desc, fpga_desc, devdesc); + + if (fdesc && fdesc->compatible && + !strcmp(fdesc->compatible, "u-boot,zynqmp-fpga-ddrauth")) { +#if CONFIG_IS_ENABLED(FPGA_LOAD_SECURE) + struct fpga_secure_info info = { 0 }; + + if (!desc->operations->loads) { + printf("%s: Missing load operation\n", __func__); + return FPGA_FAIL; + } + /* DDR authentication */ + info.authflag = 1; + info.encflag = 2; + return desc->operations->loads(desc, buf, bsize, &info); +#else + printf("No support for %s\n", fdesc->compatible); + return FPGA_FAIL; +#endif + } if (zynqmp_firmware_version() <= PMUFW_V1_0) { puts("WARN: PMUFW v1.0 or less is detected\n");