crypto: iaa - Remove header table code
authorTom Zanussi <tom.zanussi@linux.intel.com>
Mon, 8 Jan 2024 22:53:48 +0000 (16:53 -0600)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 26 Jan 2024 08:39:32 +0000 (16:39 +0800)
The header table and related code is currently unused - it was
included and used for canned mode, but canned mode has been removed,
so this code can be safely removed as well.

This indirectly fixes a bug reported by Dan Carpenter.

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/linux-crypto/b2e0bd974981291e16882686a2b9b1db3986abe4.camel@linux.intel.com/T/#m4403253d6a4347a925fab4fc1cdb4ef7c095fb86
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/intel/iaa/iaa_crypto.h
drivers/crypto/intel/iaa/iaa_crypto_comp_fixed.c
drivers/crypto/intel/iaa/iaa_crypto_main.c

index 014420f..2524091 100644 (file)
@@ -59,10 +59,8 @@ struct iaa_device_compression_mode {
        const char                      *name;
 
        struct aecs_comp_table_record   *aecs_comp_table;
-       struct aecs_decomp_table_record *aecs_decomp_table;
 
        dma_addr_t                      aecs_comp_table_dma_addr;
-       dma_addr_t                      aecs_decomp_table_dma_addr;
 };
 
 /* Representation of IAA device with wqs, populated by probe */
@@ -107,23 +105,6 @@ struct aecs_comp_table_record {
        u32 reserved_padding[2];
 } __packed;
 
-/* AECS for decompress */
-struct aecs_decomp_table_record {
-       u32 crc;
-       u32 xor_checksum;
-       u32 low_filter_param;
-       u32 high_filter_param;
-       u32 output_mod_idx;
-       u32 drop_init_decomp_out_bytes;
-       u32 reserved[36];
-       u32 output_accum_data[2];
-       u32 out_bits_valid;
-       u32 bit_off_indexing;
-       u32 input_accum_data[64];
-       u8  size_qw[32];
-       u32 decomp_state[1220];
-} __packed;
-
 int iaa_aecs_init_fixed(void);
 void iaa_aecs_cleanup_fixed(void);
 
@@ -136,9 +117,6 @@ struct iaa_compression_mode {
        int                     ll_table_size;
        u32                     *d_table;
        int                     d_table_size;
-       u32                     *header_table;
-       int                     header_table_size;
-       u16                     gen_decomp_table_flags;
        iaa_dev_comp_init_fn_t  init;
        iaa_dev_comp_free_fn_t  free;
 };
@@ -148,9 +126,6 @@ int add_iaa_compression_mode(const char *name,
                             int ll_table_size,
                             const u32 *d_table,
                             int d_table_size,
-                            const u8 *header_table,
-                            int header_table_size,
-                            u16 gen_decomp_table_flags,
                             iaa_dev_comp_init_fn_t init,
                             iaa_dev_comp_free_fn_t free);
 
index 45cf5d7..19d9a33 100644 (file)
@@ -78,7 +78,6 @@ int iaa_aecs_init_fixed(void)
                                       sizeof(fixed_ll_sym),
                                       fixed_d_sym,
                                       sizeof(fixed_d_sym),
-                                      NULL, 0, 0,
                                       init_fixed_mode, NULL);
        if (!ret)
                pr_debug("IAA fixed compression mode initialized\n");
index dfd3baf..39a5fc9 100644 (file)
@@ -258,16 +258,14 @@ static void free_iaa_compression_mode(struct iaa_compression_mode *mode)
        kfree(mode->name);
        kfree(mode->ll_table);
        kfree(mode->d_table);
-       kfree(mode->header_table);
 
        kfree(mode);
 }
 
 /*
- * IAA Compression modes are defined by an ll_table, a d_table, and an
- * optional header_table.  These tables are typically generated and
- * captured using statistics collected from running actual
- * compress/decompress workloads.
+ * IAA Compression modes are defined by an ll_table and a d_table.
+ * These tables are typically generated and captured using statistics
+ * collected from running actual compress/decompress workloads.
  *
  * A module or other kernel code can add and remove compression modes
  * with a given name using the exported @add_iaa_compression_mode()
@@ -315,9 +313,6 @@ EXPORT_SYMBOL_GPL(remove_iaa_compression_mode);
  * @ll_table_size: The ll table size in bytes
  * @d_table: The d table
  * @d_table_size: The d table size in bytes
- * @header_table: Optional header table
- * @header_table_size: Optional header table size in bytes
- * @gen_decomp_table_flags: Otional flags used to generate the decomp table
  * @init: Optional callback function to init the compression mode data
  * @free: Optional callback function to free the compression mode data
  *
@@ -330,9 +325,6 @@ int add_iaa_compression_mode(const char *name,
                             int ll_table_size,
                             const u32 *d_table,
                             int d_table_size,
-                            const u8 *header_table,
-                            int header_table_size,
-                            u16 gen_decomp_table_flags,
                             iaa_dev_comp_init_fn_t init,
                             iaa_dev_comp_free_fn_t free)
 {
@@ -370,16 +362,6 @@ int add_iaa_compression_mode(const char *name,
                mode->d_table_size = d_table_size;
        }
 
-       if (header_table) {
-               mode->header_table = kzalloc(header_table_size, GFP_KERNEL);
-               if (!mode->header_table)
-                       goto free;
-               memcpy(mode->header_table, header_table, header_table_size);
-               mode->header_table_size = header_table_size;
-       }
-
-       mode->gen_decomp_table_flags = gen_decomp_table_flags;
-
        mode->init = init;
        mode->free = free;
 
@@ -420,10 +402,6 @@ static void free_device_compression_mode(struct iaa_device *iaa_device,
        if (device_mode->aecs_comp_table)
                dma_free_coherent(dev, size, device_mode->aecs_comp_table,
                                  device_mode->aecs_comp_table_dma_addr);
-       if (device_mode->aecs_decomp_table)
-               dma_free_coherent(dev, size, device_mode->aecs_decomp_table,
-                                 device_mode->aecs_decomp_table_dma_addr);
-
        kfree(device_mode);
 }
 
@@ -440,73 +418,6 @@ static int check_completion(struct device *dev,
                            bool compress,
                            bool only_once);
 
-static int decompress_header(struct iaa_device_compression_mode *device_mode,
-                            struct iaa_compression_mode *mode,
-                            struct idxd_wq *wq)
-{
-       dma_addr_t src_addr, src2_addr;
-       struct idxd_desc *idxd_desc;
-       struct iax_hw_desc *desc;
-       struct device *dev;
-       int ret = 0;
-
-       idxd_desc = idxd_alloc_desc(wq, IDXD_OP_BLOCK);
-       if (IS_ERR(idxd_desc))
-               return PTR_ERR(idxd_desc);
-
-       desc = idxd_desc->iax_hw;
-
-       dev = &wq->idxd->pdev->dev;
-
-       src_addr = dma_map_single(dev, (void *)mode->header_table,
-                                 mode->header_table_size, DMA_TO_DEVICE);
-       dev_dbg(dev, "%s: mode->name %s, src_addr %llx, dev %p, src %p, slen %d\n",
-               __func__, mode->name, src_addr, dev,
-               mode->header_table, mode->header_table_size);
-       if (unlikely(dma_mapping_error(dev, src_addr))) {
-               dev_dbg(dev, "dma_map_single err, exiting\n");
-               ret = -ENOMEM;
-               return ret;
-       }
-
-       desc->flags = IAX_AECS_GEN_FLAG;
-       desc->opcode = IAX_OPCODE_DECOMPRESS;
-
-       desc->src1_addr = (u64)src_addr;
-       desc->src1_size = mode->header_table_size;
-
-       src2_addr = device_mode->aecs_decomp_table_dma_addr;
-       desc->src2_addr = (u64)src2_addr;
-       desc->src2_size = 1088;
-       dev_dbg(dev, "%s: mode->name %s, src2_addr %llx, dev %p, src2_size %d\n",
-               __func__, mode->name, desc->src2_addr, dev, desc->src2_size);
-       desc->max_dst_size = 0; // suppressed output
-
-       desc->decompr_flags = mode->gen_decomp_table_flags;
-
-       desc->priv = 0;
-
-       desc->completion_addr = idxd_desc->compl_dma;
-
-       ret = idxd_submit_desc(wq, idxd_desc);
-       if (ret) {
-               pr_err("%s: submit_desc failed ret=0x%x\n", __func__, ret);
-               goto out;
-       }
-
-       ret = check_completion(dev, idxd_desc->iax_completion, false, false);
-       if (ret)
-               dev_dbg(dev, "%s: mode->name %s check_completion failed ret=%d\n",
-                       __func__, mode->name, ret);
-       else
-               dev_dbg(dev, "%s: mode->name %s succeeded\n", __func__,
-                       mode->name);
-out:
-       dma_unmap_single(dev, src_addr, 1088, DMA_TO_DEVICE);
-
-       return ret;
-}
-
 static int init_device_compression_mode(struct iaa_device *iaa_device,
                                        struct iaa_compression_mode *mode,
                                        int idx, struct idxd_wq *wq)
@@ -529,24 +440,11 @@ static int init_device_compression_mode(struct iaa_device *iaa_device,
        if (!device_mode->aecs_comp_table)
                goto free;
 
-       device_mode->aecs_decomp_table = dma_alloc_coherent(dev, size,
-                                                           &device_mode->aecs_decomp_table_dma_addr, GFP_KERNEL);
-       if (!device_mode->aecs_decomp_table)
-               goto free;
-
        /* Add Huffman table to aecs */
        memset(device_mode->aecs_comp_table, 0, sizeof(*device_mode->aecs_comp_table));
        memcpy(device_mode->aecs_comp_table->ll_sym, mode->ll_table, mode->ll_table_size);
        memcpy(device_mode->aecs_comp_table->d_sym, mode->d_table, mode->d_table_size);
 
-       if (mode->header_table) {
-               ret = decompress_header(device_mode, mode, wq);
-               if (ret) {
-                       pr_debug("iaa header decompression failed: ret=%d\n", ret);
-                       goto free;
-               }
-       }
-
        if (mode->init) {
                ret = mode->init(device_mode);
                if (ret)