* [PATCH 0/4] crypto: qat: Minor Fixes
@ 2014-06-24 22:19 Tadeusz Struk
2014-06-24 22:19 ` [PATCH 1/4] crypto: qat: Fix random config build warnings Tadeusz Struk
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Tadeusz Struk @ 2014-06-24 22:19 UTC (permalink / raw)
To: herbert; +Cc: davem, bruce.w.allan, linux-crypto, qat-linux
The following series fixes minor format issues, updates FW info, and fixes
error path crash when no firmware is present.
---
Tadeusz Struk (4):
crypto: qat: Fix random config build warnings
crypto: qat: Updated Firmware Info Metadata
crypto: qat: Fixed new checkpatch warnings
crypto: qat: Fix error path crash when no firmware is present
drivers/crypto/qat/Kconfig | 1 +
drivers/crypto/qat/qat_common/adf_accel_devices.h | 1 +
drivers/crypto/qat/qat_common/adf_aer.c | 1 +
drivers/crypto/qat/qat_common/adf_cfg.c | 3 ++
drivers/crypto/qat/qat_common/adf_common_drv.h | 2 +-
drivers/crypto/qat/qat_common/adf_transport.c | 2 ++
.../crypto/qat/qat_common/adf_transport_debug.c | 3 ++
drivers/crypto/qat/qat_common/qat_algs.c | 10 ++++++--
drivers/crypto/qat/qat_common/qat_crypto.c | 4 ++-
drivers/crypto/qat/qat_common/qat_hal.c | 7 ++++--
drivers/crypto/qat/qat_common/qat_uclo.c | 25 +++++++++++---------
drivers/crypto/qat/qat_dh895xcc/adf_drv.c | 1 +
drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c | 12 +++++-----
drivers/crypto/qat/qat_dh895xcc/adf_isr.c | 2 +-
14 files changed, 48 insertions(+), 26 deletions(-)
--
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 1/4] crypto: qat: Fix random config build warnings 2014-06-24 22:19 [PATCH 0/4] crypto: qat: Minor Fixes Tadeusz Struk @ 2014-06-24 22:19 ` Tadeusz Struk 2014-06-25 13:36 ` Herbert Xu 2014-06-24 22:19 ` [PATCH 2/4] crypto: qat: Updated Firmware Info Metadata Tadeusz Struk ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Tadeusz Struk @ 2014-06-24 22:19 UTC (permalink / raw) To: herbert; +Cc: davem, bruce.w.allan, linux-crypto, qat-linux Fix random config build warnings: Implicit-function-declaration ‘__raw_writel’ Cast to pointer from integer of different size [-Wint-to-pointer-cast] Reviewed-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> --- drivers/crypto/qat/qat_common/adf_accel_devices.h | 1 + drivers/crypto/qat/qat_common/qat_algs.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/crypto/qat/qat_common/adf_accel_devices.h b/drivers/crypto/qat/qat_common/adf_accel_devices.h index f3206d9..9282381 100644 --- a/drivers/crypto/qat/qat_common/adf_accel_devices.h +++ b/drivers/crypto/qat/qat_common/adf_accel_devices.h @@ -50,6 +50,7 @@ #include <linux/atomic.h> #include <linux/list.h> #include <linux/proc_fs.h> +#include <linux/io.h> #include "adf_cfg_common.h" #define PCI_VENDOR_ID_INTEL 0x8086 diff --git a/drivers/crypto/qat/qat_common/qat_algs.c b/drivers/crypto/qat/qat_common/qat_algs.c index 193b753..c4e8010 100644 --- a/drivers/crypto/qat/qat_common/qat_algs.c +++ b/drivers/crypto/qat/qat_common/qat_algs.c @@ -745,7 +745,7 @@ void qat_alg_callback(void *resp) { struct icp_qat_fw_la_resp *qat_resp = resp; struct qat_crypto_request *qat_req = - (void *)(dma_addr_t)qat_resp->opaque_data; + (void *)(__force long)qat_resp->opaque_data; struct qat_alg_session_ctx *ctx = qat_req->ctx; struct qat_crypto_instance *inst = ctx->inst; struct aead_request *areq = qat_req->areq; @@ -779,7 +779,7 @@ static int qat_alg_dec(struct aead_request *areq) *msg = ctx->dec_fw_req_tmpl; qat_req->ctx = ctx; qat_req->areq = areq; - qat_req->req.comn_mid.opaque_data = (uint64_t)(dma_addr_t)qat_req; + qat_req->req.comn_mid.opaque_data = (uint64_t)(__force long)qat_req; qat_req->req.comn_mid.src_data_addr = qat_req->buf.blp; qat_req->req.comn_mid.dest_data_addr = qat_req->buf.bloutp; cipher_param = (void *)&qat_req->req.serv_specif_rqpars; @@ -822,7 +822,7 @@ static int qat_alg_enc_internal(struct aead_request *areq, uint8_t *iv, *msg = ctx->enc_fw_req_tmpl; qat_req->ctx = ctx; qat_req->areq = areq; - qat_req->req.comn_mid.opaque_data = (uint64_t)(dma_addr_t)qat_req; + qat_req->req.comn_mid.opaque_data = (uint64_t)(__force long)qat_req; qat_req->req.comn_mid.src_data_addr = qat_req->buf.blp; qat_req->req.comn_mid.dest_data_addr = qat_req->buf.bloutp; cipher_param = (void *)&qat_req->req.serv_specif_rqpars; ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] crypto: qat: Fix random config build warnings 2014-06-24 22:19 ` [PATCH 1/4] crypto: qat: Fix random config build warnings Tadeusz Struk @ 2014-06-25 13:36 ` Herbert Xu 2014-06-25 13:52 ` Tadeusz Struk 0 siblings, 1 reply; 8+ messages in thread From: Herbert Xu @ 2014-06-25 13:36 UTC (permalink / raw) To: Tadeusz Struk; +Cc: davem, bruce.w.allan, linux-crypto, qat-linux On Tue, Jun 24, 2014 at 03:19:24PM -0700, Tadeusz Struk wrote: > Fix random config build warnings: > > Implicit-function-declaration ‘__raw_writel’ > Cast to pointer from integer of different size [-Wint-to-pointer-cast] > > Reviewed-by: Bruce Allan <bruce.w.allan@intel.com> > Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> > --- > drivers/crypto/qat/qat_common/adf_accel_devices.h | 1 + > drivers/crypto/qat/qat_common/qat_algs.c | 6 +++--- > 2 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/crypto/qat/qat_common/adf_accel_devices.h b/drivers/crypto/qat/qat_common/adf_accel_devices.h > index f3206d9..9282381 100644 > --- a/drivers/crypto/qat/qat_common/adf_accel_devices.h > +++ b/drivers/crypto/qat/qat_common/adf_accel_devices.h > @@ -50,6 +50,7 @@ > #include <linux/atomic.h> > #include <linux/list.h> > #include <linux/proc_fs.h> > +#include <linux/io.h> > #include "adf_cfg_common.h" > > #define PCI_VENDOR_ID_INTEL 0x8086 > diff --git a/drivers/crypto/qat/qat_common/qat_algs.c b/drivers/crypto/qat/qat_common/qat_algs.c > index 193b753..c4e8010 100644 > --- a/drivers/crypto/qat/qat_common/qat_algs.c > +++ b/drivers/crypto/qat/qat_common/qat_algs.c > @@ -745,7 +745,7 @@ void qat_alg_callback(void *resp) > { > struct icp_qat_fw_la_resp *qat_resp = resp; > struct qat_crypto_request *qat_req = > - (void *)(dma_addr_t)qat_resp->opaque_data; > + (void *)(__force long)qat_resp->opaque_data; Why not just get rid of the (__force long) altogether? Thanks, -- Email: Herbert Xu <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] crypto: qat: Fix random config build warnings 2014-06-25 13:36 ` Herbert Xu @ 2014-06-25 13:52 ` Tadeusz Struk 2014-06-26 6:51 ` Herbert Xu 0 siblings, 1 reply; 8+ messages in thread From: Tadeusz Struk @ 2014-06-25 13:52 UTC (permalink / raw) To: Herbert Xu; +Cc: davem, bruce.w.allan, linux-crypto, qat-linux On 06/25/2014 06:36 AM, Herbert Xu wrote: >> struct icp_qat_fw_la_resp *qat_resp = resp; >> > struct qat_crypto_request *qat_req = >> > - (void *)(dma_addr_t)qat_resp->opaque_data; >> > + (void *)(__force long)qat_resp->opaque_data; > Why not just get rid of the (__force long) altogether? It complains when cross compiled for 32bit. Regards. Tadeusz ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] crypto: qat: Fix random config build warnings 2014-06-25 13:52 ` Tadeusz Struk @ 2014-06-26 6:51 ` Herbert Xu 0 siblings, 0 replies; 8+ messages in thread From: Herbert Xu @ 2014-06-26 6:51 UTC (permalink / raw) To: Tadeusz Struk; +Cc: davem, bruce.w.allan, linux-crypto, qat-linux On Wed, Jun 25, 2014 at 06:52:16AM -0700, Tadeusz Struk wrote: > On 06/25/2014 06:36 AM, Herbert Xu wrote: > >> struct icp_qat_fw_la_resp *qat_resp = resp; > >> > struct qat_crypto_request *qat_req = > >> > - (void *)(dma_addr_t)qat_resp->opaque_data; > >> > + (void *)(__force long)qat_resp->opaque_data; > > Why not just get rid of the (__force long) altogether? > It complains when cross compiled for 32bit. OK all applied. Thanks! -- Email: Herbert Xu <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/4] crypto: qat: Updated Firmware Info Metadata 2014-06-24 22:19 [PATCH 0/4] crypto: qat: Minor Fixes Tadeusz Struk 2014-06-24 22:19 ` [PATCH 1/4] crypto: qat: Fix random config build warnings Tadeusz Struk @ 2014-06-24 22:19 ` Tadeusz Struk 2014-06-24 22:19 ` [PATCH 3/4] crypto: qat: Fixed new checkpatch warnings Tadeusz Struk 2014-06-24 22:19 ` [PATCH 4/4] crypto: qat: Fix error path crash when no firmware is present Tadeusz Struk 3 siblings, 0 replies; 8+ messages in thread From: Tadeusz Struk @ 2014-06-24 22:19 UTC (permalink / raw) To: herbert; +Cc: davem, bruce.w.allan, linux-crypto, qat-linux Updated Firmware Info Metadata Reviewed-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> --- drivers/crypto/qat/Kconfig | 1 + drivers/crypto/qat/qat_dh895xcc/adf_drv.c | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/crypto/qat/Kconfig b/drivers/crypto/qat/Kconfig index 3bd3fd9..49bede2 100644 --- a/drivers/crypto/qat/Kconfig +++ b/drivers/crypto/qat/Kconfig @@ -8,6 +8,7 @@ config CRYPTO_DEV_QAT select CRYPTO_SHA1 select CRYPTO_SHA256 select CRYPTO_SHA512 + select FW_LOADER config CRYPTO_DEV_QAT_DH895xCC tristate "Support for Intel(R) DH895xCC" diff --git a/drivers/crypto/qat/qat_dh895xcc/adf_drv.c b/drivers/crypto/qat/qat_dh895xcc/adf_drv.c index 1da2f78..0d0435a 100644 --- a/drivers/crypto/qat/qat_dh895xcc/adf_drv.c +++ b/drivers/crypto/qat/qat_dh895xcc/adf_drv.c @@ -445,4 +445,5 @@ module_exit(adfdrv_release); MODULE_LICENSE("Dual BSD/GPL"); MODULE_AUTHOR("Intel"); +MODULE_FIRMWARE("qat_895xcc.bin"); MODULE_DESCRIPTION("Intel(R) QuickAssist Technology"); ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] crypto: qat: Fixed new checkpatch warnings 2014-06-24 22:19 [PATCH 0/4] crypto: qat: Minor Fixes Tadeusz Struk 2014-06-24 22:19 ` [PATCH 1/4] crypto: qat: Fix random config build warnings Tadeusz Struk 2014-06-24 22:19 ` [PATCH 2/4] crypto: qat: Updated Firmware Info Metadata Tadeusz Struk @ 2014-06-24 22:19 ` Tadeusz Struk 2014-06-24 22:19 ` [PATCH 4/4] crypto: qat: Fix error path crash when no firmware is present Tadeusz Struk 3 siblings, 0 replies; 8+ messages in thread From: Tadeusz Struk @ 2014-06-24 22:19 UTC (permalink / raw) To: herbert; +Cc: davem, bruce.w.allan, linux-crypto, qat-linux After updates to checkpatch new warnings pops up this patch fixes them. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Acked-by: Tadeusz Struk <tadeusz.struk@intel.com> --- drivers/crypto/qat/qat_common/adf_aer.c | 1 + drivers/crypto/qat/qat_common/adf_cfg.c | 3 +++ drivers/crypto/qat/qat_common/adf_transport.c | 2 ++ .../crypto/qat/qat_common/adf_transport_debug.c | 3 +++ drivers/crypto/qat/qat_common/qat_algs.c | 4 ++++ drivers/crypto/qat/qat_common/qat_crypto.c | 4 ++-- drivers/crypto/qat/qat_common/qat_hal.c | 7 +++++-- drivers/crypto/qat/qat_common/qat_uclo.c | 17 ++++++++++------- drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c | 12 ++++++------ drivers/crypto/qat/qat_dh895xcc/adf_isr.c | 2 +- 10 files changed, 37 insertions(+), 18 deletions(-) diff --git a/drivers/crypto/qat/qat_common/adf_aer.c b/drivers/crypto/qat/qat_common/adf_aer.c index 0651678..c29d4c3 100644 --- a/drivers/crypto/qat/qat_common/adf_aer.c +++ b/drivers/crypto/qat/qat_common/adf_aer.c @@ -95,6 +95,7 @@ static void adf_dev_restore(struct adf_accel_dev *accel_dev) pending = ppdstat & PCI_EXP_DEVSTA_TRPND; if (pending) { int ctr = 0; + do { msleep(100); pci_read_config_word(pdev, PPDSTAT_OFFSET, &ppdstat); diff --git a/drivers/crypto/qat/qat_common/adf_cfg.c b/drivers/crypto/qat/qat_common/adf_cfg.c index 389c0cf..4279076 100644 --- a/drivers/crypto/qat/qat_common/adf_cfg.c +++ b/drivers/crypto/qat/qat_common/adf_cfg.c @@ -57,6 +57,7 @@ static DEFINE_MUTEX(qat_cfg_read_lock); static void *qat_dev_cfg_start(struct seq_file *sfile, loff_t *pos) { struct adf_cfg_device_data *dev_cfg = sfile->private; + mutex_lock(&qat_cfg_read_lock); return seq_list_start(&dev_cfg->sec_list, *pos); } @@ -79,6 +80,7 @@ static int qat_dev_cfg_show(struct seq_file *sfile, void *v) static void *qat_dev_cfg_next(struct seq_file *sfile, void *v, loff_t *pos) { struct adf_cfg_device_data *dev_cfg = sfile->private; + return seq_list_next(v, &dev_cfg->sec_list, pos); } @@ -100,6 +102,7 @@ static int qat_dev_cfg_open(struct inode *inode, struct file *file) if (!ret) { struct seq_file *seq_f = file->private_data; + seq_f->private = inode->i_private; } return ret; diff --git a/drivers/crypto/qat/qat_common/adf_transport.c b/drivers/crypto/qat/qat_common/adf_transport.c index b213010..5f3fa45 100644 --- a/drivers/crypto/qat/qat_common/adf_transport.c +++ b/drivers/crypto/qat/qat_common/adf_transport.c @@ -55,6 +55,7 @@ static inline uint32_t adf_modulo(uint32_t data, uint32_t shift) { uint32_t div = data >> shift; uint32_t mult = div << shift; + return data - mult; } @@ -68,6 +69,7 @@ static inline int adf_check_ring_alignment(uint64_t addr, uint64_t size) static int adf_verify_ring_size(uint32_t msg_size, uint32_t msg_num) { int i = ADF_MIN_RING_SIZE; + for (; i <= ADF_MAX_RING_SIZE; i++) if ((msg_size * msg_num) == ADF_SIZE_TO_RING_SIZE_IN_BYTES(i)) return i; diff --git a/drivers/crypto/qat/qat_common/adf_transport_debug.c b/drivers/crypto/qat/qat_common/adf_transport_debug.c index d83a581..6b69745 100644 --- a/drivers/crypto/qat/qat_common/adf_transport_debug.c +++ b/drivers/crypto/qat/qat_common/adf_transport_debug.c @@ -57,6 +57,7 @@ static DEFINE_MUTEX(bank_read_lock); static void *adf_ring_start(struct seq_file *sfile, loff_t *pos) { struct adf_etr_ring_data *ring = sfile->private; + mutex_lock(&ring_read_lock); if (*pos == 0) return SEQ_START_TOKEN; @@ -143,6 +144,7 @@ static int adf_ring_open(struct inode *inode, struct file *file) if (!ret) { struct seq_file *seq_f = file->private_data; + seq_f->private = inode->i_private; } return ret; @@ -258,6 +260,7 @@ static int adf_bank_open(struct inode *inode, struct file *file) if (!ret) { struct seq_file *seq_f = file->private_data; + seq_f->private = inode->i_private; } return ret; diff --git a/drivers/crypto/qat/qat_common/qat_algs.c b/drivers/crypto/qat/qat_common/qat_algs.c index c4e8010..946686f 100644 --- a/drivers/crypto/qat/qat_common/qat_algs.c +++ b/drivers/crypto/qat/qat_common/qat_algs.c @@ -610,6 +610,7 @@ static void qat_alg_free_bufl(struct qat_crypto_instance *inst, if (blp != blpout) { /* If out of place operation dma unmap only data */ int bufless = bufs - blout->num_mapped_bufs; + for (i = bufless; i < bufs; i++) { dma_unmap_single(dev, blout->bufers[i].addr, blout->bufers[i].len, @@ -667,6 +668,7 @@ static int qat_alg_sgl_to_bufl(struct qat_crypto_instance *inst, for_each_sg(sgl, sg, n, i) { int y = i + bufs; + bufl->bufers[y].addr = dma_map_single(dev, sg_virt(sg), sg->length, DMA_BIDIRECTIONAL); @@ -698,6 +700,7 @@ static int qat_alg_sgl_to_bufl(struct qat_crypto_instance *inst, } for_each_sg(sglout, sg, n, i) { int y = i + bufs; + bufers[y].addr = dma_map_single(dev, sg_virt(sg), sg->length, DMA_BIDIRECTIONAL); @@ -729,6 +732,7 @@ err: if (sgl != sglout && buflout) { for_each_sg(sglout, sg, n, i) { int y = i + bufs; + if (!dma_mapping_error(dev, buflout->bufers[y].addr)) dma_unmap_single(dev, buflout->bufers[y].addr, buflout->bufers[y].len, diff --git a/drivers/crypto/qat/qat_common/qat_crypto.c b/drivers/crypto/qat/qat_common/qat_crypto.c index cc562cb..0d59bcb 100644 --- a/drivers/crypto/qat/qat_common/qat_crypto.c +++ b/drivers/crypto/qat/qat_common/qat_crypto.c @@ -146,8 +146,8 @@ struct qat_crypto_instance *qat_crypto_get_instance_node(int node) static int qat_crypto_create_instances(struct adf_accel_dev *accel_dev) { int i; - long unsigned int bank; - long unsigned int num_inst, num_msg_sym, num_msg_asym; + unsigned long bank; + unsigned long num_inst, num_msg_sym, num_msg_asym; int msg_size; struct qat_crypto_instance *inst; char key[ADF_CFG_MAX_KEY_LEN_IN_BYTES]; diff --git a/drivers/crypto/qat/qat_common/qat_hal.c b/drivers/crypto/qat/qat_common/qat_hal.c index 260cd71..903ca88 100644 --- a/drivers/crypto/qat/qat_common/qat_hal.c +++ b/drivers/crypto/qat/qat_common/qat_hal.c @@ -266,6 +266,7 @@ static unsigned short qat_hal_get_reg_addr(unsigned int type, unsigned short reg_num) { unsigned short reg_addr; + switch (type) { case ICP_GPA_ABS: case ICP_GPB_ABS: @@ -816,6 +817,7 @@ void qat_hal_wr_umem(struct icp_qat_fw_loader_handle *handle, qat_hal_wr_ae_csr(handle, ae, USTORE_ADDRESS, uaddr); for (i = 0; i < words_num; i++) { unsigned int uwrd_lo, uwrd_hi, tmp; + uwrd_lo = ((data[i] & 0xfff0000) << 4) | (0x3 << 18) | ((data[i] & 0xff00) << 2) | (0x3 << 8) | (data[i] & 0xff); @@ -888,6 +890,7 @@ static int qat_hal_exec_micro_inst(struct icp_qat_fw_loader_handle *handle, return -EFAULT; if (endpc) { unsigned int ctx_status; + qat_hal_rd_indr_csr(handle, ae, ctx, CTX_STS_INDIRECT, &ctx_status); *endpc = ctx_status & handle->hal_handle->upc_mask; @@ -1111,8 +1114,8 @@ int qat_hal_batch_wr_lm(struct icp_qat_fw_loader_handle *handle, alloc_inst_size = lm_init_header->size; if ((unsigned int)alloc_inst_size > handle->hal_handle->max_ustore) alloc_inst_size = handle->hal_handle->max_ustore; - micro_inst_arry = kmalloc(alloc_inst_size * sizeof(uint64_t), - GFP_KERNEL); + micro_inst_arry = kmalloc_array(alloc_inst_size, sizeof(uint64_t), + GFP_KERNEL); if (!micro_inst_arry) return -ENOMEM; micro_inst_num = 0; diff --git a/drivers/crypto/qat/qat_common/qat_uclo.c b/drivers/crypto/qat/qat_common/qat_uclo.c index a698d07e..20b6b42 100644 --- a/drivers/crypto/qat/qat_common/qat_uclo.c +++ b/drivers/crypto/qat/qat_common/qat_uclo.c @@ -171,7 +171,6 @@ static void qat_uclo_wr_umem_by_words(struct icp_qat_fw_loader_handle *handle, num_in_bytes -= 4; ptr += 4; } - return; } static void qat_uclo_batch_wr_umem(struct icp_qat_fw_loader_handle *handle, @@ -186,6 +185,7 @@ static void qat_uclo_batch_wr_umem(struct icp_qat_fw_loader_handle *handle, umem_init = umem_init_header->next; while (umem_init) { unsigned int addr, *value, size; + ae = umem_init->ae; addr = umem_init->addr; value = umem_init->value; @@ -204,6 +204,7 @@ qat_uclo_cleanup_batch_init_list(struct icp_qat_fw_loader_handle *handle, umem_init = *base; while (umem_init) { struct icp_qat_uof_batch_init *pre; + pre = umem_init; umem_init = umem_init->next; kfree(pre); @@ -414,7 +415,7 @@ static int qat_uclo_init_ustore(struct icp_qat_fw_loader_handle *handle, uint64_t *fill_data; uof_image = image->img_ptr; - fill_data = kzalloc(ICP_QAT_UCLO_MAX_USTORE * sizeof(uint64_t), + fill_data = kcalloc(ICP_QAT_UCLO_MAX_USTORE, sizeof(uint64_t), GFP_KERNEL); if (!fill_data) return -EFAULT; @@ -720,6 +721,7 @@ qat_uclo_map_str_table(struct icp_qat_uclo_objhdr *obj_hdr, obj_hdr->file_buff, tab_name, NULL); if (chunk_hdr) { int hdr_size; + memcpy(&str_table->table_len, obj_hdr->file_buff + chunk_hdr->offset, sizeof(str_table->table_len)); hdr_size = (char *)&str_table->strings - (char *)str_table; @@ -821,6 +823,7 @@ static int qat_uclo_init_reg_sym(struct icp_qat_fw_loader_handle *handle, for (i = 0; i < encap_ae->init_regsym_num; i++) { unsigned int exp_res; + init_regsym = &encap_ae->init_regsym[i]; exp_res = init_regsym->value; switch (init_regsym->init_type) { @@ -949,7 +952,7 @@ static int qat_uclo_parse_uof_obj(struct icp_qat_fw_loader_handle *handle) struct icp_qat_uclo_objhandle *obj_handle = handle->obj_handle; unsigned int ae; - obj_handle->uword_buf = kzalloc(UWORD_CPYBUF_SIZE * sizeof(uint64_t), + obj_handle->uword_buf = kcalloc(UWORD_CPYBUF_SIZE, sizeof(uint64_t), GFP_KERNEL); if (!obj_handle->uword_buf) return -ENOMEM; @@ -957,20 +960,20 @@ static int qat_uclo_parse_uof_obj(struct icp_qat_fw_loader_handle *handle) obj_handle->encap_uof_obj.obj_hdr = (struct icp_qat_uof_objhdr *) obj_handle->obj_hdr->file_buff; obj_handle->encap_uof_obj.chunk_hdr = (struct icp_qat_uof_chunkhdr *) - obj_handle->obj_hdr->file_buff + sizeof(struct icp_qat_uof_objhdr); + (obj_handle->obj_hdr->file_buff + sizeof(struct icp_qat_uof_objhdr)); obj_handle->uword_in_bytes = 6; obj_handle->prod_type = ICP_QAT_AC_C_CPU_TYPE; obj_handle->prod_rev = PID_MAJOR_REV | (PID_MINOR_REV & handle->hal_handle->revision_id); if (qat_uclo_check_uof_compat(obj_handle)) { - pr_err("QAT: uof incompatible\n "); + pr_err("QAT: uof incompatible\n"); return -EINVAL; } obj_handle->ustore_phy_size = ICP_QAT_UCLO_MAX_USTORE; if (!(obj_handle->obj_hdr->file_buff) || !(qat_uclo_map_str_table(obj_handle->obj_hdr, ICP_QAT_UOF_STRT, &(obj_handle->str_table)))) { - pr_err("QAT: uof doesn't have effective images"); + pr_err("QAT: uof doesn't have effective images\n"); goto out_err; } obj_handle->uimage_num = @@ -979,7 +982,7 @@ static int qat_uclo_parse_uof_obj(struct icp_qat_fw_loader_handle *handle) if (!obj_handle->uimage_num) goto out_err; if (qat_uclo_map_ae(handle, handle->hal_handle->ae_max_num)) { - pr_err("QAT: Bad object\n "); + pr_err("QAT: Bad object\n"); goto out_check_uof_aemask_err; } qat_uclo_init_uword_num(handle); diff --git a/drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c b/drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c index 36ffa70..1864bdb 100644 --- a/drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c +++ b/drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c @@ -63,29 +63,29 @@ #define WRITE_CSR_ARB_RINGSRVARBEN(csr_addr, index, value) \ ADF_CSR_WR(csr_addr, ADF_ARB_RINGSRVARBEN_OFFSET + \ - (ADF_ARB_REG_SLOT * index), value); + (ADF_ARB_REG_SLOT * index), value) #define WRITE_CSR_ARB_RESPORDERING(csr_addr, index, value) \ ADF_CSR_WR(csr_addr, (ADF_ARB_OFFSET + \ - ADF_ARB_RO_EN_OFFSET) + (ADF_ARB_REG_SIZE * index), value); + ADF_ARB_RO_EN_OFFSET) + (ADF_ARB_REG_SIZE * index), value) #define WRITE_CSR_ARB_WEIGHT(csr_addr, arb, index, value) \ ADF_CSR_WR(csr_addr, (ADF_ARB_OFFSET + \ ADF_ARB_WTR_OFFSET) + (ADF_ARB_WTR_SIZE * arb) + \ - (ADF_ARB_REG_SIZE * index), value); + (ADF_ARB_REG_SIZE * index), value) #define WRITE_CSR_ARB_SARCONFIG(csr_addr, index, value) \ ADF_CSR_WR(csr_addr, ADF_ARB_OFFSET + \ - (ADF_ARB_REG_SIZE * index), value); + (ADF_ARB_REG_SIZE * index), value) #define WRITE_CSR_ARB_WRK_2_SER_MAP(csr_addr, index, value) \ ADF_CSR_WR(csr_addr, (ADF_ARB_OFFSET + \ ADF_ARB_WRK_2_SER_MAP_OFFSET) + \ - (ADF_ARB_REG_SIZE * index), value); + (ADF_ARB_REG_SIZE * index), value) #define WRITE_CSR_ARB_WQCFG(csr_addr, index, value) \ ADF_CSR_WR(csr_addr, (ADF_ARB_OFFSET + \ - ADF_ARB_WQCFG_OFFSET) + (ADF_ARB_REG_SIZE * index), value); + ADF_ARB_WQCFG_OFFSET) + (ADF_ARB_REG_SIZE * index), value) int adf_init_arb(struct adf_accel_dev *accel_dev) { diff --git a/drivers/crypto/qat/qat_dh895xcc/adf_isr.c b/drivers/crypto/qat/qat_dh895xcc/adf_isr.c index 77e2d3a..d4172de 100644 --- a/drivers/crypto/qat/qat_dh895xcc/adf_isr.c +++ b/drivers/crypto/qat/qat_dh895xcc/adf_isr.c @@ -172,7 +172,7 @@ static int adf_isr_alloc_msix_entry_table(struct adf_accel_dev *accel_dev) if (!entries) return -ENOMEM; - names = kzalloc(msix_num_entries * sizeof(char *), GFP_KERNEL); + names = kcalloc(msix_num_entries, sizeof(char *), GFP_KERNEL); if (!names) { kfree(entries); return -ENOMEM; ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] crypto: qat: Fix error path crash when no firmware is present 2014-06-24 22:19 [PATCH 0/4] crypto: qat: Minor Fixes Tadeusz Struk ` (2 preceding siblings ...) 2014-06-24 22:19 ` [PATCH 3/4] crypto: qat: Fixed new checkpatch warnings Tadeusz Struk @ 2014-06-24 22:19 ` Tadeusz Struk 3 siblings, 0 replies; 8+ messages in thread From: Tadeusz Struk @ 2014-06-24 22:19 UTC (permalink / raw) To: herbert; +Cc: davem, bruce.w.allan, linux-crypto, qat-linux Firmware loader crashes when no firmware file is present. Reviewed-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> --- drivers/crypto/qat/qat_common/adf_common_drv.h | 2 +- drivers/crypto/qat/qat_common/qat_uclo.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/crypto/qat/qat_common/adf_common_drv.h b/drivers/crypto/qat/qat_common/adf_common_drv.h index 3cea9fa..5e8f9d4 100644 --- a/drivers/crypto/qat/qat_common/adf_common_drv.h +++ b/drivers/crypto/qat/qat_common/adf_common_drv.h @@ -186,7 +186,7 @@ int qat_hal_init_nn(struct icp_qat_fw_loader_handle *handle, int qat_hal_wr_lm(struct icp_qat_fw_loader_handle *handle, unsigned char ae, unsigned short lm_addr, unsigned int value); int qat_uclo_wr_all_uimage(struct icp_qat_fw_loader_handle *handle); -int qat_uclo_del_uof_obj(struct icp_qat_fw_loader_handle *handle); +void qat_uclo_del_uof_obj(struct icp_qat_fw_loader_handle *handle); int qat_uclo_map_uof_obj(struct icp_qat_fw_loader_handle *handle, void *addr_ptr, int mem_size); #endif diff --git a/drivers/crypto/qat/qat_common/qat_uclo.c b/drivers/crypto/qat/qat_common/qat_uclo.c index 20b6b42..dd4e0d3 100644 --- a/drivers/crypto/qat/qat_common/qat_uclo.c +++ b/drivers/crypto/qat/qat_common/qat_uclo.c @@ -959,8 +959,6 @@ static int qat_uclo_parse_uof_obj(struct icp_qat_fw_loader_handle *handle) obj_handle->encap_uof_obj.beg_uof = obj_handle->obj_hdr->file_buff; obj_handle->encap_uof_obj.obj_hdr = (struct icp_qat_uof_objhdr *) obj_handle->obj_hdr->file_buff; - obj_handle->encap_uof_obj.chunk_hdr = (struct icp_qat_uof_chunkhdr *) - (obj_handle->obj_hdr->file_buff + sizeof(struct icp_qat_uof_objhdr)); obj_handle->uword_in_bytes = 6; obj_handle->prod_type = ICP_QAT_AC_C_CPU_TYPE; obj_handle->prod_rev = PID_MAJOR_REV | @@ -1040,23 +1038,25 @@ out_objbuf_err: return -ENOMEM; } -int qat_uclo_del_uof_obj(struct icp_qat_fw_loader_handle *handle) +void qat_uclo_del_uof_obj(struct icp_qat_fw_loader_handle *handle) { struct icp_qat_uclo_objhandle *obj_handle = handle->obj_handle; int a; + if (!obj_handle) + return; + kfree(obj_handle->uword_buf); for (a = 0; a < obj_handle->uimage_num; a++) kfree(obj_handle->ae_uimage[a].page); for (a = 0; a <= (int)handle->hal_handle->ae_max_num; a++) qat_uclo_free_ae_data(&obj_handle->ae_data[a]); - kfree(obj_handle->obj_hdr); + kfree(obj_handle->obj_hdr); kfree(obj_handle->obj_buf); kfree(obj_handle); handle->obj_handle = NULL; - return 0; } static void qat_uclo_fill_uwords(struct icp_qat_uclo_objhandle *obj_handle, ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-06-26 6:51 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-06-24 22:19 [PATCH 0/4] crypto: qat: Minor Fixes Tadeusz Struk 2014-06-24 22:19 ` [PATCH 1/4] crypto: qat: Fix random config build warnings Tadeusz Struk 2014-06-25 13:36 ` Herbert Xu 2014-06-25 13:52 ` Tadeusz Struk 2014-06-26 6:51 ` Herbert Xu 2014-06-24 22:19 ` [PATCH 2/4] crypto: qat: Updated Firmware Info Metadata Tadeusz Struk 2014-06-24 22:19 ` [PATCH 3/4] crypto: qat: Fixed new checkpatch warnings Tadeusz Struk 2014-06-24 22:19 ` [PATCH 4/4] crypto: qat: Fix error path crash when no firmware is present Tadeusz Struk
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox