From: Nava kishore Manne Date: Mon, 18 Sep 2017 14:14:54 +0000 (+0530) Subject: Revert "fpga manager: Adopted Authenticated BitStream loading support for Xilinx" X-Git-Url: https://rtime.felk.cvut.cz/gitweb/vajnamar/linux-xlnx.git/commitdiff_plain/a7fbcf35084ba4e64d1a99c8aaacaee401630cdd Revert "fpga manager: Adopted Authenticated BitStream loading support for Xilinx" This reverts commit ed5a1413206f479a2ec68205539af4e299ce8ee7. The FW (xilfpga) is using single pair of keys to authenticate the Image. According to the xilinx flow we need to use a pair of keys to provide the proper authentication support. currently the FW don't have this support. So this patch remove the Authenticated BitStream loading support. Signed-off-by: Nava kishore Manne Signed-off-by: Michal Simek --- diff --git a/drivers/fpga/fpga-mgr.c b/drivers/fpga/fpga-mgr.c index ee8deb489a01..f62897adf015 100644 --- a/drivers/fpga/fpga-mgr.c +++ b/drivers/fpga/fpga-mgr.c @@ -133,50 +133,6 @@ int fpga_mgr_firmware_load(struct fpga_manager *mgr, } EXPORT_SYMBOL_GPL(fpga_mgr_firmware_load); -int fpga_mgr_signature_load(struct fpga_manager *mgr, - const char *image_name) -{ - struct device *dev = &mgr->dev; - const struct firmware *fw; - int ret; - - dev_info(dev, "Loading %s to %s\n", image_name, mgr->name); - - ret = request_firmware(&fw, image_name, dev); - if (ret) { - dev_err(dev, "Error requesting firmware %s\n", image_name); - return ret; - } - - memcpy(mgr->signature, fw->data, fw->size); - - release_firmware(fw); - - return ret; -} - -int fpga_mgr_pubkey_load(struct fpga_manager *mgr, - const char *image_name) -{ - struct device *dev = &mgr->dev; - const struct firmware *fw; - int ret; - - dev_info(dev, "Loading %s to %s\n", image_name, mgr->name); - - ret = request_firmware(&fw, image_name, dev); - if (ret) { - dev_err(dev, "Error requesting firmware %s\n", image_name); - return ret; - } - - memcpy(mgr->pubkey, fw->data, fw->size); - - release_firmware(fw); - - return ret; -} - static const char * const state_str[] = { [FPGA_MGR_STATE_UNKNOWN] = "unknown", [FPGA_MGR_STATE_POWER_OFF] = "power off", @@ -247,50 +203,6 @@ static ssize_t firmware_store(struct device *dev, return count; } -static ssize_t signature_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct fpga_manager *mgr = to_fpga_manager(dev); - unsigned int len; - char image_name[NAME_MAX]; - int ret; - - /* lose terminating \n */ - strcpy(image_name, buf); - len = strlen(image_name); - if (image_name[len - 1] == '\n') - image_name[len - 1] = 0; - - ret = fpga_mgr_signature_load(mgr, image_name); - if (ret) - return ret; - - return count; -} - -static ssize_t pubkey_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct fpga_manager *mgr = to_fpga_manager(dev); - unsigned int len; - char image_name[NAME_MAX]; - int ret; - - /* lose terminating \n */ - strcpy(image_name, buf); - len = strlen(image_name); - if (image_name[len - 1] == '\n') - image_name[len - 1] = 0; - - ret = fpga_mgr_pubkey_load(mgr, image_name); - if (ret) - return ret; - - return count; -} - static ssize_t key_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -354,8 +266,6 @@ static ssize_t flags_store(struct device *dev, static DEVICE_ATTR_RO(name); static DEVICE_ATTR_RO(state); static DEVICE_ATTR_WO(firmware); -static DEVICE_ATTR_WO(signature); -static DEVICE_ATTR_WO(pubkey); static DEVICE_ATTR_RW(flags); static DEVICE_ATTR_RW(key); static DEVICE_ATTR_RW(iv); @@ -364,8 +274,6 @@ static struct attribute *fpga_mgr_attrs[] = { &dev_attr_name.attr, &dev_attr_state.attr, &dev_attr_firmware.attr, - &dev_attr_signature.attr, - &dev_attr_pubkey.attr, &dev_attr_flags.attr, &dev_attr_key.attr, &dev_attr_iv.attr, diff --git a/drivers/fpga/zynqmp-fpga.c b/drivers/fpga/zynqmp-fpga.c index 46180d9eda00..3bfa498e8d9a 100644 --- a/drivers/fpga/zynqmp-fpga.c +++ b/drivers/fpga/zynqmp-fpga.c @@ -24,7 +24,6 @@ /* Constant Definitions */ #define IXR_FPGA_DONE_MASK 0X00000008U -#define IXR_FPGA_AUTHENTICATIN 0x00000004U #define IXR_FPGA_ENCRYPTION_EN 0x00000008U struct zynqmp_fpga_priv { @@ -49,17 +48,17 @@ static int zynqmp_fpga_ops_write(struct fpga_manager *mgr, { struct zynqmp_fpga_priv *priv; char *kbuf; - size_t dma_size = size; + size_t dma_size; dma_addr_t dma_addr; u32 transfer_length; int ret; priv = mgr->priv; - if (mgr->flags & IXR_FPGA_AUTHENTICATIN) - dma_size = dma_size + SIGNATURE_LEN + PUBLIC_KEY_LEN; if (mgr->flags & IXR_FPGA_ENCRYPTION_EN) - dma_size = dma_size + ENCRYPTED_KEY_LEN + ENCRYPTED_IV_LEN; + dma_size = size + ENCRYPTED_KEY_LEN + ENCRYPTED_IV_LEN; + else + dma_size = size; kbuf = dma_alloc_coherent(priv->dev, dma_size, &dma_addr, GFP_KERNEL); if (!kbuf) @@ -67,11 +66,6 @@ static int zynqmp_fpga_ops_write(struct fpga_manager *mgr, memcpy(kbuf, buf, size); - if (mgr->flags & IXR_FPGA_AUTHENTICATIN) { - memcpy(kbuf + size, mgr->signature, SIGNATURE_LEN); - memcpy(kbuf + size + SIGNATURE_LEN, mgr->pubkey, - PUBLIC_KEY_LEN); - } if (mgr->flags & IXR_FPGA_ENCRYPTION_EN) { memcpy(kbuf + size, mgr->key, ENCRYPTED_KEY_LEN); memcpy(kbuf + size + ENCRYPTED_KEY_LEN, mgr->iv, diff --git a/include/linux/fpga/fpga-mgr.h b/include/linux/fpga/fpga-mgr.h index 6296044a891c..030bb0779c67 100644 --- a/include/linux/fpga/fpga-mgr.h +++ b/include/linux/fpga/fpga-mgr.h @@ -23,8 +23,6 @@ #define ENCRYPTED_KEY_LEN 64 /* Bytes */ #define ENCRYPTED_IV_LEN 24 /* Bytes */ -#define SIGNATURE_LEN 512 /* Bytes */ -#define PUBLIC_KEY_LEN 516 /* Bytes */ struct fpga_manager; @@ -124,8 +122,6 @@ struct fpga_manager { long int flags; char key[ENCRYPTED_KEY_LEN]; char iv[ENCRYPTED_IV_LEN]; - char signature[SIGNATURE_LEN]; - char pubkey[PUBLIC_KEY_LEN]; struct device dev; struct mutex ref_mutex; enum fpga_mgr_states state;