From: kernel test robot <lkp@intel.com> To: Giovanni Cabiddu <giovanni.cabiddu@intel.com> Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, Herbert Xu <herbert@gondor.apana.org.au>, Fiona Trahe <fiona.trahe@intel.com> Subject: drivers/crypto/qat/qat_4xxx/adf_drv.c:134:34: warning: taking address of packed member 'status' of class or structure 'adf_accel_dev' may result in an unaligned pointer value Date: Wed, 1 Sep 2021 02:38:20 +0800 [thread overview] Message-ID: <202109010213.HUJ4Oqm9-lkp@intel.com> (raw) [-- Attachment #1: Type: text/plain, Size: 13680 bytes --] tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: b91db6a0b52e019b6bdabea3f1dbe36d85c7e52c commit: 8c8268166e83425243789c5781c92e7fa33b703b crypto: qat - add qat_4xxx driver date: 10 months ago config: i386-randconfig-r012-20210831 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 4b1fde8a2b681dad2ce0c082a5d6422caa06b0bc) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8c8268166e83425243789c5781c92e7fa33b703b git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 8c8268166e83425243789c5781c92e7fa33b703b # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): clang-14: warning: optimization flag '-falign-jumps=0' is not supported [-Wignored-optimization-argument] In file included from drivers/crypto/qat/qat_4xxx/adf_drv.c:3: In file included from include/linux/device.h:15: In file included from include/linux/dev_printk.h:16: In file included from include/linux/ratelimit.h:6: In file included from include/linux/sched.h:14: In file included from include/linux/pid.h:5: In file included from include/linux/rculist.h:11: In file included from include/linux/rcupdate.h:27: In file included from include/linux/preempt.h:78: In file included from arch/x86/include/asm/preempt.h:7: In file included from include/linux/thread_info.h:38: arch/x86/include/asm/thread_info.h:183:13: warning: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Wframe-address] oldframe = __builtin_frame_address(1); ^~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/thread_info.h:185:11: warning: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Wframe-address] frame = __builtin_frame_address(2); ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/crypto/qat/qat_4xxx/adf_drv.c:134:34: warning: taking address of packed member 'status' of class or structure 'adf_accel_dev' may result in an unaligned pointer value [-Waddress-of-packed-member] set_bit(ADF_STATUS_CONFIGURED, &accel_dev->status); ^~~~~~~~~~~~~~~~~ >> drivers/crypto/qat/qat_4xxx/adf_drv.c:166:18: warning: taking address of packed member 'crypto_list' of class or structure 'adf_accel_dev' may result in an unaligned pointer value [-Waddress-of-packed-member] INIT_LIST_HEAD(&accel_dev->crypto_list); ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/crypto/qat/qat_4xxx/adf_drv.c:191:57: warning: taking address of packed member 'fuses' of class or structure 'adf_hw_device_data' may result in an unaligned pointer value [-Waddress-of-packed-member] pci_read_config_dword(pdev, ADF_4XXX_FUSECTL4_OFFSET, &hw_data->fuses); ^~~~~~~~~~~~~~ 5 warnings generated. -- clang-14: warning: optimization flag '-falign-jumps=0' is not supported [-Wignored-optimization-argument] In file included from drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c:3: In file included from drivers/crypto/qat/qat_4xxx/../qat_common/adf_accel_devices.h:5: In file included from include/linux/interrupt.h:11: In file included from include/linux/hardirq.h:5: In file included from include/linux/context_tracking_state.h:5: In file included from include/linux/percpu.h:6: In file included from include/linux/preempt.h:78: In file included from arch/x86/include/asm/preempt.h:7: In file included from include/linux/thread_info.h:38: arch/x86/include/asm/thread_info.h:183:13: warning: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Wframe-address] oldframe = __builtin_frame_address(1); ^~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/thread_info.h:185:11: warning: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Wframe-address] frame = __builtin_frame_address(2); ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c:212:28: warning: taking address of packed member 'csr_ops' of class or structure 'adf_hw_device_data' may result in an unaligned pointer value [-Waddress-of-packed-member] adf_gen4_init_hw_csr_ops(&hw_data->csr_ops); ^~~~~~~~~~~~~~~~ 3 warnings generated. vim +134 drivers/crypto/qat/qat_4xxx/adf_drv.c 31 32 static int adf_crypto_dev_config(struct adf_accel_dev *accel_dev) 33 { 34 char key[ADF_CFG_MAX_KEY_LEN_IN_BYTES]; 35 int banks = GET_MAX_BANKS(accel_dev); 36 int cpus = num_online_cpus(); 37 unsigned long bank, val; 38 int instances; 39 int ret; 40 int i; 41 42 if (adf_hw_dev_has_crypto(accel_dev)) 43 instances = min(cpus, banks / 2); 44 else 45 instances = 0; 46 47 ret = adf_cfg_section_add(accel_dev, ADF_KERNEL_SEC); 48 if (ret) 49 goto err; 50 51 ret = adf_cfg_section_add(accel_dev, "Accelerator0"); 52 if (ret) 53 goto err; 54 55 for (i = 0; i < instances; i++) { 56 val = i; 57 bank = i * 2; 58 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_ASYM_BANK_NUM, i); 59 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 60 key, &bank, ADF_DEC); 61 if (ret) 62 goto err; 63 64 bank += 1; 65 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_SYM_BANK_NUM, i); 66 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 67 key, &bank, ADF_DEC); 68 if (ret) 69 goto err; 70 71 snprintf(key, sizeof(key), ADF_CY "%d" ADF_ETRMGR_CORE_AFFINITY, 72 i); 73 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 74 key, &val, ADF_DEC); 75 if (ret) 76 goto err; 77 78 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_ASYM_SIZE, i); 79 val = 128; 80 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 81 key, &val, ADF_DEC); 82 if (ret) 83 goto err; 84 85 val = 512; 86 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_SYM_SIZE, i); 87 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 88 key, &val, ADF_DEC); 89 if (ret) 90 goto err; 91 92 val = 0; 93 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_ASYM_TX, i); 94 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 95 key, &val, ADF_DEC); 96 if (ret) 97 goto err; 98 99 val = 0; 100 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_SYM_TX, i); 101 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 102 key, &val, ADF_DEC); 103 if (ret) 104 goto err; 105 106 val = 1; 107 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_ASYM_RX, i); 108 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 109 key, &val, ADF_DEC); 110 if (ret) 111 goto err; 112 113 val = 1; 114 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_SYM_RX, i); 115 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 116 key, &val, ADF_DEC); 117 if (ret) 118 goto err; 119 120 val = ADF_COALESCING_DEF_TIME; 121 snprintf(key, sizeof(key), ADF_ETRMGR_COALESCE_TIMER_FORMAT, i); 122 ret = adf_cfg_add_key_value_param(accel_dev, "Accelerator0", 123 key, &val, ADF_DEC); 124 if (ret) 125 goto err; 126 } 127 128 val = i; 129 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, ADF_NUM_CY, 130 &val, ADF_DEC); 131 if (ret) 132 goto err; 133 > 134 set_bit(ADF_STATUS_CONFIGURED, &accel_dev->status); 135 return 0; 136 err: 137 dev_err(&GET_DEV(accel_dev), "Failed to start QAT accel dev\n"); 138 return ret; 139 } 140 141 static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 142 { 143 struct adf_accel_dev *accel_dev; 144 struct adf_accel_pci *accel_pci_dev; 145 struct adf_hw_device_data *hw_data; 146 char name[ADF_DEVICE_NAME_LENGTH]; 147 unsigned int i, bar_nr; 148 unsigned long bar_mask; 149 struct adf_bar *bar; 150 int ret; 151 152 if (num_possible_nodes() > 1 && dev_to_node(&pdev->dev) < 0) { 153 /* 154 * If the accelerator is connected to a node with no memory 155 * there is no point in using the accelerator since the remote 156 * memory transaction will be very slow. 157 */ 158 dev_err(&pdev->dev, "Invalid NUMA configuration.\n"); 159 return -EINVAL; 160 } 161 162 accel_dev = devm_kzalloc(&pdev->dev, sizeof(*accel_dev), GFP_KERNEL); 163 if (!accel_dev) 164 return -ENOMEM; 165 > 166 INIT_LIST_HEAD(&accel_dev->crypto_list); 167 accel_pci_dev = &accel_dev->accel_pci_dev; 168 accel_pci_dev->pci_dev = pdev; 169 170 /* 171 * Add accel device to accel table 172 * This should be called before adf_cleanup_accel is called 173 */ 174 if (adf_devmgr_add_dev(accel_dev, NULL)) { 175 dev_err(&pdev->dev, "Failed to add new accelerator device.\n"); 176 return -EFAULT; 177 } 178 179 accel_dev->owner = THIS_MODULE; 180 /* Allocate and initialise device hardware meta-data structure */ 181 hw_data = devm_kzalloc(&pdev->dev, sizeof(*hw_data), GFP_KERNEL); 182 if (!hw_data) { 183 ret = -ENOMEM; 184 goto out_err; 185 } 186 187 accel_dev->hw_device = hw_data; 188 adf_init_hw_data_4xxx(accel_dev->hw_device); 189 190 pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid); > 191 pci_read_config_dword(pdev, ADF_4XXX_FUSECTL4_OFFSET, &hw_data->fuses); 192 193 /* Get Accelerators and Accelerators Engines masks */ 194 hw_data->accel_mask = hw_data->get_accel_mask(hw_data); 195 hw_data->ae_mask = hw_data->get_ae_mask(hw_data); 196 accel_pci_dev->sku = hw_data->get_sku(hw_data); 197 /* If the device has no acceleration engines then ignore it */ 198 if (!hw_data->accel_mask || !hw_data->ae_mask || 199 (~hw_data->ae_mask & 0x01)) { 200 dev_err(&pdev->dev, "No acceleration units found.\n"); 201 ret = -EFAULT; 202 goto out_err; 203 } 204 205 /* Create dev top level debugfs entry */ 206 snprintf(name, sizeof(name), "%s%s_%s", ADF_DEVICE_NAME_PREFIX, 207 hw_data->dev_class->name, pci_name(pdev)); 208 209 accel_dev->debugfs_dir = debugfs_create_dir(name, NULL); 210 211 /* Create device configuration table */ 212 ret = adf_cfg_dev_add(accel_dev); 213 if (ret) 214 goto out_err; 215 216 /* Enable PCI device */ 217 ret = pcim_enable_device(pdev); 218 if (ret) { 219 dev_err(&pdev->dev, "Can't enable PCI device.\n"); 220 goto out_err; 221 } 222 223 /* Set DMA identifier */ 224 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { 225 if ((pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { 226 dev_err(&pdev->dev, "No usable DMA configuration.\n"); 227 ret = -EFAULT; 228 goto out_err; 229 } else { 230 pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)); 231 } 232 } else { 233 pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); 234 } 235 236 /* Find and map all the device's BARS */ 237 bar_mask = pci_select_bars(pdev, IORESOURCE_MEM) & ADF_4XXX_BAR_MASK; 238 239 ret = pcim_iomap_regions_request_all(pdev, bar_mask, pci_name(pdev)); 240 if (ret) { 241 dev_err(&pdev->dev, "Failed to map pci regions.\n"); 242 goto out_err; 243 } 244 245 i = 0; 246 for_each_set_bit(bar_nr, &bar_mask, PCI_STD_NUM_BARS) { 247 bar = &accel_pci_dev->pci_bars[i++]; 248 bar->virt_addr = pcim_iomap_table(pdev)[bar_nr]; 249 } 250 251 pci_set_master(pdev); 252 253 if (adf_enable_aer(accel_dev)) { 254 dev_err(&pdev->dev, "Failed to enable aer.\n"); 255 ret = -EFAULT; 256 goto out_err; 257 } 258 259 if (pci_save_state(pdev)) { 260 dev_err(&pdev->dev, "Failed to save pci state.\n"); 261 ret = -ENOMEM; 262 goto out_err_disable_aer; 263 } 264 265 ret = adf_crypto_dev_config(accel_dev); 266 if (ret) 267 goto out_err_disable_aer; 268 269 ret = adf_dev_init(accel_dev); 270 if (ret) 271 goto out_err_dev_shutdown; 272 273 ret = adf_dev_start(accel_dev); 274 if (ret) 275 goto out_err_dev_stop; 276 277 return ret; 278 279 out_err_dev_stop: 280 adf_dev_stop(accel_dev); 281 out_err_dev_shutdown: 282 adf_dev_shutdown(accel_dev); 283 out_err_disable_aer: 284 adf_disable_aer(accel_dev); 285 out_err: 286 adf_cleanup_accel(accel_dev); 287 return ret; 288 } 289 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 41402 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com> To: kbuild-all@lists.01.org Subject: drivers/crypto/qat/qat_4xxx/adf_drv.c:134:34: warning: taking address of packed member 'status' of class or structure 'adf_accel_dev' may result in an unaligned pointer value Date: Wed, 01 Sep 2021 02:38:20 +0800 [thread overview] Message-ID: <202109010213.HUJ4Oqm9-lkp@intel.com> (raw) [-- Attachment #1: Type: text/plain, Size: 14019 bytes --] tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: b91db6a0b52e019b6bdabea3f1dbe36d85c7e52c commit: 8c8268166e83425243789c5781c92e7fa33b703b crypto: qat - add qat_4xxx driver date: 10 months ago config: i386-randconfig-r012-20210831 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 4b1fde8a2b681dad2ce0c082a5d6422caa06b0bc) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8c8268166e83425243789c5781c92e7fa33b703b git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 8c8268166e83425243789c5781c92e7fa33b703b # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): clang-14: warning: optimization flag '-falign-jumps=0' is not supported [-Wignored-optimization-argument] In file included from drivers/crypto/qat/qat_4xxx/adf_drv.c:3: In file included from include/linux/device.h:15: In file included from include/linux/dev_printk.h:16: In file included from include/linux/ratelimit.h:6: In file included from include/linux/sched.h:14: In file included from include/linux/pid.h:5: In file included from include/linux/rculist.h:11: In file included from include/linux/rcupdate.h:27: In file included from include/linux/preempt.h:78: In file included from arch/x86/include/asm/preempt.h:7: In file included from include/linux/thread_info.h:38: arch/x86/include/asm/thread_info.h:183:13: warning: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Wframe-address] oldframe = __builtin_frame_address(1); ^~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/thread_info.h:185:11: warning: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Wframe-address] frame = __builtin_frame_address(2); ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/crypto/qat/qat_4xxx/adf_drv.c:134:34: warning: taking address of packed member 'status' of class or structure 'adf_accel_dev' may result in an unaligned pointer value [-Waddress-of-packed-member] set_bit(ADF_STATUS_CONFIGURED, &accel_dev->status); ^~~~~~~~~~~~~~~~~ >> drivers/crypto/qat/qat_4xxx/adf_drv.c:166:18: warning: taking address of packed member 'crypto_list' of class or structure 'adf_accel_dev' may result in an unaligned pointer value [-Waddress-of-packed-member] INIT_LIST_HEAD(&accel_dev->crypto_list); ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/crypto/qat/qat_4xxx/adf_drv.c:191:57: warning: taking address of packed member 'fuses' of class or structure 'adf_hw_device_data' may result in an unaligned pointer value [-Waddress-of-packed-member] pci_read_config_dword(pdev, ADF_4XXX_FUSECTL4_OFFSET, &hw_data->fuses); ^~~~~~~~~~~~~~ 5 warnings generated. -- clang-14: warning: optimization flag '-falign-jumps=0' is not supported [-Wignored-optimization-argument] In file included from drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c:3: In file included from drivers/crypto/qat/qat_4xxx/../qat_common/adf_accel_devices.h:5: In file included from include/linux/interrupt.h:11: In file included from include/linux/hardirq.h:5: In file included from include/linux/context_tracking_state.h:5: In file included from include/linux/percpu.h:6: In file included from include/linux/preempt.h:78: In file included from arch/x86/include/asm/preempt.h:7: In file included from include/linux/thread_info.h:38: arch/x86/include/asm/thread_info.h:183:13: warning: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Wframe-address] oldframe = __builtin_frame_address(1); ^~~~~~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/thread_info.h:185:11: warning: calling '__builtin_frame_address' with a nonzero argument is unsafe [-Wframe-address] frame = __builtin_frame_address(2); ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c:212:28: warning: taking address of packed member 'csr_ops' of class or structure 'adf_hw_device_data' may result in an unaligned pointer value [-Waddress-of-packed-member] adf_gen4_init_hw_csr_ops(&hw_data->csr_ops); ^~~~~~~~~~~~~~~~ 3 warnings generated. vim +134 drivers/crypto/qat/qat_4xxx/adf_drv.c 31 32 static int adf_crypto_dev_config(struct adf_accel_dev *accel_dev) 33 { 34 char key[ADF_CFG_MAX_KEY_LEN_IN_BYTES]; 35 int banks = GET_MAX_BANKS(accel_dev); 36 int cpus = num_online_cpus(); 37 unsigned long bank, val; 38 int instances; 39 int ret; 40 int i; 41 42 if (adf_hw_dev_has_crypto(accel_dev)) 43 instances = min(cpus, banks / 2); 44 else 45 instances = 0; 46 47 ret = adf_cfg_section_add(accel_dev, ADF_KERNEL_SEC); 48 if (ret) 49 goto err; 50 51 ret = adf_cfg_section_add(accel_dev, "Accelerator0"); 52 if (ret) 53 goto err; 54 55 for (i = 0; i < instances; i++) { 56 val = i; 57 bank = i * 2; 58 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_ASYM_BANK_NUM, i); 59 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 60 key, &bank, ADF_DEC); 61 if (ret) 62 goto err; 63 64 bank += 1; 65 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_SYM_BANK_NUM, i); 66 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 67 key, &bank, ADF_DEC); 68 if (ret) 69 goto err; 70 71 snprintf(key, sizeof(key), ADF_CY "%d" ADF_ETRMGR_CORE_AFFINITY, 72 i); 73 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 74 key, &val, ADF_DEC); 75 if (ret) 76 goto err; 77 78 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_ASYM_SIZE, i); 79 val = 128; 80 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 81 key, &val, ADF_DEC); 82 if (ret) 83 goto err; 84 85 val = 512; 86 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_SYM_SIZE, i); 87 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 88 key, &val, ADF_DEC); 89 if (ret) 90 goto err; 91 92 val = 0; 93 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_ASYM_TX, i); 94 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 95 key, &val, ADF_DEC); 96 if (ret) 97 goto err; 98 99 val = 0; 100 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_SYM_TX, i); 101 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 102 key, &val, ADF_DEC); 103 if (ret) 104 goto err; 105 106 val = 1; 107 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_ASYM_RX, i); 108 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 109 key, &val, ADF_DEC); 110 if (ret) 111 goto err; 112 113 val = 1; 114 snprintf(key, sizeof(key), ADF_CY "%d" ADF_RING_SYM_RX, i); 115 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, 116 key, &val, ADF_DEC); 117 if (ret) 118 goto err; 119 120 val = ADF_COALESCING_DEF_TIME; 121 snprintf(key, sizeof(key), ADF_ETRMGR_COALESCE_TIMER_FORMAT, i); 122 ret = adf_cfg_add_key_value_param(accel_dev, "Accelerator0", 123 key, &val, ADF_DEC); 124 if (ret) 125 goto err; 126 } 127 128 val = i; 129 ret = adf_cfg_add_key_value_param(accel_dev, ADF_KERNEL_SEC, ADF_NUM_CY, 130 &val, ADF_DEC); 131 if (ret) 132 goto err; 133 > 134 set_bit(ADF_STATUS_CONFIGURED, &accel_dev->status); 135 return 0; 136 err: 137 dev_err(&GET_DEV(accel_dev), "Failed to start QAT accel dev\n"); 138 return ret; 139 } 140 141 static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) 142 { 143 struct adf_accel_dev *accel_dev; 144 struct adf_accel_pci *accel_pci_dev; 145 struct adf_hw_device_data *hw_data; 146 char name[ADF_DEVICE_NAME_LENGTH]; 147 unsigned int i, bar_nr; 148 unsigned long bar_mask; 149 struct adf_bar *bar; 150 int ret; 151 152 if (num_possible_nodes() > 1 && dev_to_node(&pdev->dev) < 0) { 153 /* 154 * If the accelerator is connected to a node with no memory 155 * there is no point in using the accelerator since the remote 156 * memory transaction will be very slow. 157 */ 158 dev_err(&pdev->dev, "Invalid NUMA configuration.\n"); 159 return -EINVAL; 160 } 161 162 accel_dev = devm_kzalloc(&pdev->dev, sizeof(*accel_dev), GFP_KERNEL); 163 if (!accel_dev) 164 return -ENOMEM; 165 > 166 INIT_LIST_HEAD(&accel_dev->crypto_list); 167 accel_pci_dev = &accel_dev->accel_pci_dev; 168 accel_pci_dev->pci_dev = pdev; 169 170 /* 171 * Add accel device to accel table 172 * This should be called before adf_cleanup_accel is called 173 */ 174 if (adf_devmgr_add_dev(accel_dev, NULL)) { 175 dev_err(&pdev->dev, "Failed to add new accelerator device.\n"); 176 return -EFAULT; 177 } 178 179 accel_dev->owner = THIS_MODULE; 180 /* Allocate and initialise device hardware meta-data structure */ 181 hw_data = devm_kzalloc(&pdev->dev, sizeof(*hw_data), GFP_KERNEL); 182 if (!hw_data) { 183 ret = -ENOMEM; 184 goto out_err; 185 } 186 187 accel_dev->hw_device = hw_data; 188 adf_init_hw_data_4xxx(accel_dev->hw_device); 189 190 pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid); > 191 pci_read_config_dword(pdev, ADF_4XXX_FUSECTL4_OFFSET, &hw_data->fuses); 192 193 /* Get Accelerators and Accelerators Engines masks */ 194 hw_data->accel_mask = hw_data->get_accel_mask(hw_data); 195 hw_data->ae_mask = hw_data->get_ae_mask(hw_data); 196 accel_pci_dev->sku = hw_data->get_sku(hw_data); 197 /* If the device has no acceleration engines then ignore it */ 198 if (!hw_data->accel_mask || !hw_data->ae_mask || 199 (~hw_data->ae_mask & 0x01)) { 200 dev_err(&pdev->dev, "No acceleration units found.\n"); 201 ret = -EFAULT; 202 goto out_err; 203 } 204 205 /* Create dev top level debugfs entry */ 206 snprintf(name, sizeof(name), "%s%s_%s", ADF_DEVICE_NAME_PREFIX, 207 hw_data->dev_class->name, pci_name(pdev)); 208 209 accel_dev->debugfs_dir = debugfs_create_dir(name, NULL); 210 211 /* Create device configuration table */ 212 ret = adf_cfg_dev_add(accel_dev); 213 if (ret) 214 goto out_err; 215 216 /* Enable PCI device */ 217 ret = pcim_enable_device(pdev); 218 if (ret) { 219 dev_err(&pdev->dev, "Can't enable PCI device.\n"); 220 goto out_err; 221 } 222 223 /* Set DMA identifier */ 224 if (pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { 225 if ((pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { 226 dev_err(&pdev->dev, "No usable DMA configuration.\n"); 227 ret = -EFAULT; 228 goto out_err; 229 } else { 230 pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)); 231 } 232 } else { 233 pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); 234 } 235 236 /* Find and map all the device's BARS */ 237 bar_mask = pci_select_bars(pdev, IORESOURCE_MEM) & ADF_4XXX_BAR_MASK; 238 239 ret = pcim_iomap_regions_request_all(pdev, bar_mask, pci_name(pdev)); 240 if (ret) { 241 dev_err(&pdev->dev, "Failed to map pci regions.\n"); 242 goto out_err; 243 } 244 245 i = 0; 246 for_each_set_bit(bar_nr, &bar_mask, PCI_STD_NUM_BARS) { 247 bar = &accel_pci_dev->pci_bars[i++]; 248 bar->virt_addr = pcim_iomap_table(pdev)[bar_nr]; 249 } 250 251 pci_set_master(pdev); 252 253 if (adf_enable_aer(accel_dev)) { 254 dev_err(&pdev->dev, "Failed to enable aer.\n"); 255 ret = -EFAULT; 256 goto out_err; 257 } 258 259 if (pci_save_state(pdev)) { 260 dev_err(&pdev->dev, "Failed to save pci state.\n"); 261 ret = -ENOMEM; 262 goto out_err_disable_aer; 263 } 264 265 ret = adf_crypto_dev_config(accel_dev); 266 if (ret) 267 goto out_err_disable_aer; 268 269 ret = adf_dev_init(accel_dev); 270 if (ret) 271 goto out_err_dev_shutdown; 272 273 ret = adf_dev_start(accel_dev); 274 if (ret) 275 goto out_err_dev_stop; 276 277 return ret; 278 279 out_err_dev_stop: 280 adf_dev_stop(accel_dev); 281 out_err_dev_shutdown: 282 adf_dev_shutdown(accel_dev); 283 out_err_disable_aer: 284 adf_disable_aer(accel_dev); 285 out_err: 286 adf_cleanup_accel(accel_dev); 287 return ret; 288 } 289 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 41402 bytes --]
next reply other threads:[~2021-08-31 18:39 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-31 18:38 kernel test robot [this message] 2021-08-31 18:38 ` drivers/crypto/qat/qat_4xxx/adf_drv.c:134:34: warning: taking address of packed member 'status' of class or structure 'adf_accel_dev' may result in an unaligned pointer value kernel test robot
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=202109010213.HUJ4Oqm9-lkp@intel.com \ --to=lkp@intel.com \ --cc=fiona.trahe@intel.com \ --cc=giovanni.cabiddu@intel.com \ --cc=herbert@gondor.apana.org.au \ --cc=kbuild-all@lists.01.org \ --cc=linux-kernel@vger.kernel.org \ --cc=llvm@lists.linux.dev \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.