aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorHareshx Sankar Raj <hareshx.sankar.raj@intel.com>2026-06-24 15:08:16 +0000
committerMark Johnston <markj@FreeBSD.org>2026-06-24 16:17:01 +0000
commit682f135f5de39cfc24cfd529ea8a161e94c76c8e (patch)
tree9221c5fdb1530a295b7d628707a5d08a93647ba0 /sys/dev
parent03ac6fe4f6d2bce06a672024152eb894a423dfcb (diff)
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/qat/include/adf_gen4vf_hw_csr_data.h12
-rw-r--r--sys/dev/qat/include/common/adf_accel_devices.h34
-rw-r--r--sys/dev/qat/include/common/adf_common_drv.h4
-rw-r--r--sys/dev/qat/include/common/adf_gen2_hw_data.h25
-rw-r--r--sys/dev/qat/include/common/adf_gen4_hw_data.h14
-rw-r--r--sys/dev/qat/include/common/adf_uio.h4
-rw-r--r--sys/dev/qat/include/common/adf_uio_control.h4
-rw-r--r--sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher_defs.h8
-rw-r--r--sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c41
-rw-r--r--sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c56
-rw-r--r--sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c22
-rw-r--r--sys/dev/qat/qat_api/common/utils/lac_lock_free_stack.h60
-rw-r--r--sys/dev/qat/qat_api/device/dev_info.c19
-rw-r--r--sys/dev/qat/qat_api/include/icp_sal_versions.h4
-rw-r--r--sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c3
-rw-r--r--sys/dev/qat/qat_api/qat_kernel/src/lac_symbols.c6
-rw-r--r--sys/dev/qat/qat_common/adf_accel_engine.c6
-rw-r--r--sys/dev/qat/qat_common/adf_cfg_device.c7
-rw-r--r--sys/dev/qat/qat_common/adf_ctl_drv.c13
-rw-r--r--sys/dev/qat/qat_common/adf_freebsd_admin.c35
-rw-r--r--sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c6
-rw-r--r--sys/dev/qat/qat_common/adf_freebsd_uio.c4
-rw-r--r--sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c10
-rw-r--r--sys/dev/qat/qat_common/adf_fw_counters.c4
-rw-r--r--sys/dev/qat/qat_common/adf_gen2_hw_data.c19
-rw-r--r--sys/dev/qat/qat_common/adf_gen4_hw_data.c16
-rw-r--r--sys/dev/qat/qat_common/adf_gen4_timer.c7
-rw-r--r--sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c9
-rw-r--r--sys/dev/qat/qat_common/adf_heartbeat.c4
-rw-r--r--sys/dev/qat/qat_common/adf_transport.c12
-rw-r--r--sys/dev/qat/qat_common/qat_hal.c8
-rw-r--r--sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.c18
-rw-r--r--sys/dev/qat/qat_hw/qat_200xx/adf_drv.c4
-rw-r--r--sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c50
-rw-r--r--sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c4
-rw-r--r--sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c26
-rw-r--r--sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.c18
-rw-r--r--sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c4
-rw-r--r--sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c8
-rw-r--r--sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c29
-rw-r--r--sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_res_part.c12
-rw-r--r--sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c4
-rw-r--r--sys/dev/qat/qat_hw/qat_c62x/adf_c62x_hw_data.c18
-rw-r--r--sys/dev/qat/qat_hw/qat_c62x/adf_drv.c4
-rw-r--r--sys/dev/qat/qat_hw/qat_dh895xcc/adf_dh895xcc_hw_data.c16
-rw-r--r--sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c4
46 files changed, 386 insertions, 309 deletions
diff --git a/sys/dev/qat/include/adf_gen4vf_hw_csr_data.h b/sys/dev/qat/include/adf_gen4vf_hw_csr_data.h
index 5143b88907ba..83841e1b919c 100644
--- a/sys/dev/qat/include/adf_gen4vf_hw_csr_data.h
+++ b/sys/dev/qat/include/adf_gen4vf_hw_csr_data.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#ifndef ADF_GEN4VF_HW_CSR_DATA_H_
#define ADF_GEN4VF_HW_CSR_DATA_H_
@@ -86,12 +86,12 @@ read_base_gen4vf(struct resource *csr_base_addr, u32 bank, u32 ring)
return addr;
}
-#define WRITE_CSR_INT_SRCSEL_GEN4VF(csr_base_addr, bank) \
+#define WRITE_CSR_INT_SRCSEL_GEN4VF(csr_base_addr, bank, idx, value) \
ADF_CSR_WR((csr_base_addr), \
- ADF_RING_CSR_ADDR_OFFSET_GEN4VF + \
- ADF_RING_BUNDLE_SIZE_GEN4 * (bank) + \
- ADF_RING_CSR_INT_SRCSEL, \
- ADF_BANK_INT_SRC_SEL_MASK_GEN4)
+ (ADF_RING_BUNDLE_SIZE_GEN4 * (bank)) + \
+ (ADF_RING_CSR_INT_SRCSEL + \
+ ((idx)*ADF_RING_CSR_NEXT_INT_SRCSEL)), \
+ (value))
#define READ_CSR_RING_BASE_GEN4VF(csr_base_addr, bank, ring) \
read_base_gen4vf((csr_base_addr), (bank), (ring))
diff --git a/sys/dev/qat/include/common/adf_accel_devices.h b/sys/dev/qat/include/common/adf_accel_devices.h
index eeffc6a9132c..1da5c8a7afce 100644
--- a/sys/dev/qat/include/common/adf_accel_devices.h
+++ b/sys/dev/qat/include/common/adf_accel_devices.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#ifndef ADF_ACCEL_DEVICES_H_
#define ADF_ACCEL_DEVICES_H_
@@ -199,11 +199,11 @@ struct adf_accel_unit {
} __packed;
struct adf_accel_unit_info {
- u32 inline_ingress_msk;
- u32 inline_egress_msk;
- u32 sym_ae_msk;
- u32 asym_ae_msk;
- u32 dc_ae_msk;
+ u64 inline_ingress_msk;
+ u64 inline_egress_msk;
+ u64 sym_ae_msk;
+ u64 asym_ae_msk;
+ u64 dc_ae_msk;
u8 num_cy_au;
u8 num_dc_au;
u8 num_asym_au;
@@ -287,7 +287,10 @@ struct adf_hw_csr_ops {
void (*write_csr_int_flag)(struct resource *csr_base_addr,
u32 bank,
u32 value);
- void (*write_csr_int_srcsel)(struct resource *csr_base_addr, u32 bank);
+ void (*write_csr_int_srcsel)(struct resource *csr_base_addr,
+ u32 bank,
+ u32 idx,
+ u32 value);
void (*write_csr_int_col_en)(struct resource *csr_base_addr,
u32 bank,
u32 value);
@@ -342,7 +345,7 @@ struct adf_hw_csr_info {
struct adf_hw_device_data {
struct adf_hw_device_class *dev_class;
uint32_t (*get_accel_mask)(struct adf_accel_dev *accel_dev);
- uint32_t (*get_ae_mask)(struct adf_accel_dev *accel_dev);
+ uint64_t (*get_ae_mask)(struct adf_accel_dev *accel_dev);
uint32_t (*get_sram_bar_id)(struct adf_hw_device_data *self);
uint32_t (*get_misc_bar_id)(struct adf_hw_device_data *self);
uint32_t (*get_etr_bar_id)(struct adf_hw_device_data *self);
@@ -402,7 +405,7 @@ struct adf_hw_device_data {
void (*reset_hw_units)(struct adf_accel_dev *accel_dev);
int (*measure_clock)(struct adf_accel_dev *accel_dev);
void (*restore_device)(struct adf_accel_dev *accel_dev);
- uint32_t (*get_obj_cfg_ae_mask)(struct adf_accel_dev *accel_dev,
+ uint64_t (*get_obj_cfg_ae_mask)(struct adf_accel_dev *accel_dev,
enum adf_accel_unit_services services);
enum adf_accel_unit_services (
*get_service_type)(struct adf_accel_dev *accel_dev, s32 obj_num);
@@ -440,14 +443,14 @@ struct adf_hw_device_data {
uint32_t instance_id;
uint16_t accel_mask;
u32 aerucm_mask;
- u32 ae_mask;
- u32 admin_ae_mask;
+ u64 ae_mask;
+ u64 admin_ae_mask;
u32 service_mask;
u32 service_to_load_mask;
u32 heartbeat_ctr_num;
uint16_t tx_rings_mask;
uint8_t tx_rx_gap;
- uint8_t num_banks;
+ uint16_t num_banks;
u8 num_rings_per_bank;
uint8_t num_accel;
uint8_t num_logical_accel;
@@ -614,6 +617,7 @@ struct adf_admin_comms {
bus_dmamap_t hb_map;
char *virt_addr;
char *virt_hb_addr;
+ uint32_t mailbox_offset;
struct resource *mailbox_addr;
struct sx lock;
struct bus_dmamem dma_mem;
@@ -637,9 +641,9 @@ struct adf_accel_vf_info {
};
struct adf_fw_versions {
- u8 fw_version_major;
- u8 fw_version_minor;
- u8 fw_version_patch;
+ u16 fw_version_major;
+ u16 fw_version_minor;
+ u32 fw_version_patch;
u8 mmp_version_major;
u8 mmp_version_minor;
u8 mmp_version_patch;
diff --git a/sys/dev/qat/include/common/adf_common_drv.h b/sys/dev/qat/include/common/adf_common_drv.h
index f9f4463f69c3..3d4d0530866e 100644
--- a/sys/dev/qat/include/common/adf_common_drv.h
+++ b/sys/dev/qat/include/common/adf_common_drv.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#ifndef ADF_DRV_H
#define ADF_DRV_H
@@ -145,7 +145,7 @@ struct icp_qat_fw_init_admin_resp;
int adf_send_admin(struct adf_accel_dev *accel_dev,
struct icp_qat_fw_init_admin_req *req,
struct icp_qat_fw_init_admin_resp *resp,
- u32 ae_mask);
+ u64 ae_mask);
int adf_config_device(struct adf_accel_dev *accel_dev);
int adf_init_admin_comms(struct adf_accel_dev *accel_dev);
diff --git a/sys/dev/qat/include/common/adf_gen2_hw_data.h b/sys/dev/qat/include/common/adf_gen2_hw_data.h
index 3e62431931d0..761cb69d1711 100644
--- a/sys/dev/qat/include/common/adf_gen2_hw_data.h
+++ b/sys/dev/qat/include/common/adf_gen2_hw_data.h
@@ -1,5 +1,5 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2021 Intel Corporation */
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2026 Intel Corporation */
#ifndef ADF_GEN2_HW_DATA_H_
#define ADF_GEN2_HW_DATA_H_
@@ -7,8 +7,10 @@
#include "adf_cfg_common.h"
/* Transport access */
+#define ADF_RINGS_PER_INT_SRCSEL 8
+#define ADF_RING_CSR_NEXT_INT_SRCSEL 0x4
#define ADF_BANK_INT_SRC_SEL_MASK_0 0x4444444CUL
-#define ADF_BANK_INT_SRC_SEL_MASK_X 0x44444444UL
+#define ADF_BANK_INT_SRC_SEL_MASK 0x44444444UL
#define ADF_RING_CSR_RING_CONFIG 0x000
#define ADF_RING_CSR_RING_LBASE 0x040
#define ADF_RING_CSR_RING_UBASE 0x080
@@ -97,17 +99,12 @@ read_base(struct resource *csr_base_addr, u32 bank, u32 ring)
ADF_CSR_WR(csr_base_addr, \
(ADF_RING_BUNDLE_SIZE * (bank)) + ADF_RING_CSR_INT_FLAG, \
value)
-#define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank) \
- do { \
- ADF_CSR_WR(csr_base_addr, \
- (ADF_RING_BUNDLE_SIZE * (bank)) + \
- ADF_RING_CSR_INT_SRCSEL, \
- ADF_BANK_INT_SRC_SEL_MASK_0); \
- ADF_CSR_WR(csr_base_addr, \
- (ADF_RING_BUNDLE_SIZE * (bank)) + \
- ADF_RING_CSR_INT_SRCSEL_2, \
- ADF_BANK_INT_SRC_SEL_MASK_X); \
- } while (0)
+#define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank, idx, value) \
+ ADF_CSR_WR(csr_base_addr, \
+ (ADF_RING_BUNDLE_SIZE * (bank)) + \
+ (ADF_RING_CSR_INT_SRCSEL + \
+ ((idx)*ADF_RING_CSR_NEXT_INT_SRCSEL)), \
+ (value))
#define WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value) \
ADF_CSR_WR(csr_base_addr, \
(ADF_RING_BUNDLE_SIZE * (bank)) + ADF_RING_CSR_INT_COL_EN, \
diff --git a/sys/dev/qat/include/common/adf_gen4_hw_data.h b/sys/dev/qat/include/common/adf_gen4_hw_data.h
index cde5ae1f4e10..c93b7215635e 100644
--- a/sys/dev/qat/include/common/adf_gen4_hw_data.h
+++ b/sys/dev/qat/include/common/adf_gen4_hw_data.h
@@ -1,11 +1,13 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#ifndef ADF_GEN4_HW_CSR_DATA_H_
#define ADF_GEN4_HW_CSR_DATA_H_
#include "adf_accel_devices.h"
/* Transport access */
+#define ADF_RINGS_PER_INT_SRCSEL 2
+#define ADF_RING_CSR_NEXT_INT_SRCSEL 0x4
#define ADF_BANK_INT_SRC_SEL_MASK 0x44UL
#define ADF_RING_CSR_RING_CONFIG 0x1000
#define ADF_RING_CSR_RING_LBASE 0x1040
@@ -117,11 +119,13 @@ read_base_gen4(struct resource *csr_base_addr, u32 bank, u32 ring)
ADF_RING_CSR_ADDR_OFFSET + ADF_RING_BUNDLE_SIZE * (bank) + \
ADF_RING_CSR_INT_FLAG, \
(value))
-#define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank) \
+#define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank, idx, value) \
ADF_CSR_WR((csr_base_addr), \
- ADF_RING_CSR_ADDR_OFFSET + ADF_RING_BUNDLE_SIZE * (bank) + \
- ADF_RING_CSR_INT_SRCSEL, \
- ADF_BANK_INT_SRC_SEL_MASK)
+ ADF_RING_CSR_ADDR_OFFSET + \
+ (ADF_RING_BUNDLE_SIZE * (bank)) + \
+ (ADF_RING_CSR_INT_SRCSEL + \
+ ((idx)*ADF_RING_CSR_NEXT_INT_SRCSEL)), \
+ (value))
#define WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value) \
ADF_CSR_WR((csr_base_addr), \
ADF_RING_CSR_ADDR_OFFSET + ADF_RING_BUNDLE_SIZE * (bank) + \
diff --git a/sys/dev/qat/include/common/adf_uio.h b/sys/dev/qat/include/common/adf_uio.h
index 9e32787ce128..0565da7a488d 100644
--- a/sys/dev/qat/include/common/adf_uio.h
+++ b/sys/dev/qat/include/common/adf_uio.h
@@ -1,11 +1,11 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2023 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#ifndef ADF_UIO_H
#define ADF_UIO_H
#include "adf_accel_devices.h"
struct qat_uio_bundle_dev {
- u8 hardware_bundle_number;
+ u16 hardware_bundle_number;
struct adf_uio_control_bundle *bundle;
struct adf_uio_control_accel *accel;
};
diff --git a/sys/dev/qat/include/common/adf_uio_control.h b/sys/dev/qat/include/common/adf_uio_control.h
index 032baa9b54c2..da1b57ef12c6 100644
--- a/sys/dev/qat/include/common/adf_uio_control.h
+++ b/sys/dev/qat/include/common/adf_uio_control.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#ifndef QAT_UIO_CONTROL_H
#define QAT_UIO_CONTROL_H
#include <sys/condvar.h>
@@ -11,7 +11,7 @@ struct adf_uio_instance_rings {
};
struct adf_uio_control_bundle {
- uint8_t hardware_bundle_number;
+ uint16_t hardware_bundle_number;
bool used;
struct list_head list;
struct mutex list_lock; /* protects list struct */
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher_defs.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher_defs.h
index 0873e56031db..a94a8b2b9702 100644
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher_defs.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher_defs.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
/**
*****************************************************************************
@@ -52,6 +52,12 @@
#define LAC_CIPHER_CCM_AAD_OFFSET \
(LAC_CIPHER_CCM_B0_SIZE + LAC_CIPHER_CCM_ENCODED_AAD_LEN_SIZE)
+/* The hardware requires the AAD buffer to be padded out to a multiple
+ * of 16 for these algorithms:
+ * AES_CCM, AES_GCM, CHACHA
+ */
+#define LAC_SYM_CIPHER_AAD_PADLEN 16
+
#define LAC_SYM_SNOW3G_CIPHER_CONFIG_FOR_HASH_SZ 40
/* Snow3g cipher config required for performing a Snow3g hash operation.
* It contains 8 Bytes of config for hardware, 16 Bytes of Key and requires
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c
index 56f211025103..cd383844b3ed 100644
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
/**
***************************************************************************
@@ -1567,7 +1567,6 @@ LacAlgChain_Perform(const CpaInstanceHandle instanceHandle,
CpaCySymCipherAlgorithm cipher;
CpaCySymHashAlgorithm hash;
Cpa8U paddingLen = 0;
- Cpa8U blockLen = 0;
CpaBoolean digestIsAppended = CPA_FALSE;
Cpa32U aadLenInBytes = 0;
Cpa64U srcPktSize = 0;
@@ -2000,13 +1999,17 @@ LacAlgChain_Perform(const CpaInstanceHandle instanceHandle,
if ((SPC == pSessionDesc->singlePassState) &&
CPA_STATUS_SUCCESS == status) {
Cpa64U aadBufferPhysAddr = 0;
-
- /* For CHACHA and AES-GCM there is an AAD buffer
- * if aadLenInBytes is nonzero In case of
- * AES-GMAC, AAD buffer passed in the src
+ /* Pad the AAD buffer to a blocklen multiple and
+ * get the physical address of the buffer. For
+ * CHACHA and AES-GCM there is an AAD buffer if
+ * aadLenInBytes is nonzero. For CCM there is
+ * always an AAD buffer, even if aadLenInBytes
+ * is zero, as the first 16 bytes are needed for
+ * B0. In case of AES-GMAC, no AAD buffer is
+ * needed as the AAD is passed in the src
* buffer.
*/
- if ((0 != aadLenInBytes &&
+ if ((0 < aadLenInBytes &&
CPA_CY_SYM_HASH_AES_GMAC != hash) ||
isSpCcm) {
LAC_CHECK_NULL_PARAM(
@@ -2014,19 +2017,23 @@ LacAlgChain_Perform(const CpaInstanceHandle instanceHandle,
Cpa32U aadDataLen =
pSessionDesc->aadLenInBytes;
- /* In case of AES_CCM, B0 block size and
- * 2 bytes of AAD len encoding need to
- * be added to total AAD data len */
- if (isSpCcm)
+ /* In case of AES_CCM, start padding
+ * after B0 block size plus 2 bytes of
+ * AAD len encoding plus AAD data len.
+ * Padding is only needed for aadLen >
+ * 0.
+ */
+ if (isSpCcm && 0 < aadLenInBytes)
aadDataLen +=
LAC_CIPHER_CCM_AAD_OFFSET;
- blockLen =
- LacSymQat_CipherBlockSizeBytesGet(
- cipher);
- if ((aadDataLen % blockLen) != 0) {
- paddingLen = blockLen -
- (aadDataLen % blockLen);
+ if (aadDataLen %
+ LAC_SYM_CIPHER_AAD_PADLEN !=
+ 0) {
+ paddingLen =
+ LAC_SYM_CIPHER_AAD_PADLEN -
+ (aadDataLen %
+ LAC_SYM_CIPHER_AAD_PADLEN);
memset(
&pOpData
->pAdditionalAuthData
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c
index 65a0d17d307f..882dc43d7edf 100644
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
/**
***************************************************************************
@@ -261,11 +261,14 @@ LacDp_EnqueueParamCheck(const CpaCySymDpOpData *pRequest)
->generic_service_info.capabilitiesMask;
if (LAC_CIPHER_IS_SPC(cipher, hash, capabilitiesMask) &&
(LAC_CIPHER_SPC_IV_SIZE == pRequest->ivLenInBytes)) {
- /* For CHACHA and AES_GCM single pass there is an AAD
- * buffer if aadLenInBytes is nonzero. AES_GMAC AAD is
- * stored in source buffer, therefore there is no
- * separate AAD buffer. */
- if ((0 != pSessionDesc->aadLenInBytes) &&
+ /* For CHACHA and AES-GCM there is an AAD buffer if
+ * aadLenInBytes is nonzero. For CCM there is always an
+ * AAD buffer, even if aadLenInBytes is zero, as the
+ * first 16 bytes are needed for B0. In case of
+ * AES-GMAC, no AAD buffer is needed as the AAD is
+ * passed in the src buffer.
+ */
+ if ((0 < pSessionDesc->aadLenInBytes) &&
(CPA_CY_SYM_HASH_AES_GMAC !=
pSessionDesc->hashAlgorithm)) {
LAC_CHECK_NULL_PARAM(
@@ -593,8 +596,7 @@ LacDp_WriteRingMsgFull(CpaCySymDpOpData *pRequest,
LAC_CIPHER_IS_SPC(cipher, hash, capabilitiesMask);
Cpa8U paddingLen = 0;
- Cpa8U blockLen = 0;
- Cpa32U aadDataLen = 0;
+ Cpa32U aadLenInBytes = 0;
pMsgDummy = (Cpa8U *)pCurrentQatMsg;
/* Write Request */
@@ -832,29 +834,35 @@ LacDp_WriteRingMsgFull(CpaCySymDpOpData *pRequest,
(Cpa8U)pSessionDesc->hashResultSize;
}
- /* For CHACHA and AES_GCM single pass AAD buffer needs
- * alignment if aadLenInBytes is nonzero. In case of
- * AES-GMAC, AAD buffer passed in the src buffer.
+ /* Pad the AAD buffer to a blocklen multiple.
+ * For ChaChaPoly and AES-GCM there is an AAD buffer if
+ * aadLenInBytes is nonzero. For CCM there is always an
+ * AAD buffer, even if aadLenInBytes is zero, as the
+ * first 16 bytes are needed for B0, but padding is only
+ * needed if aadLen > 0. In case of AES-GMAC, there's no
+ * AAD buffer as the AAD is passed in the src buffer, so
+ * no padding needed.
*/
- if (0 != pSessionDesc->aadLenInBytes &&
+ if (0 < pSessionDesc->aadLenInBytes &&
CPA_CY_SYM_HASH_AES_GMAC !=
pSessionDesc->hashAlgorithm) {
- blockLen = LacSymQat_CipherBlockSizeBytesGet(
- pSessionDesc->cipherAlgorithm);
- aadDataLen = pSessionDesc->aadLenInBytes;
+ aadLenInBytes = pSessionDesc->aadLenInBytes;
- /* In case of AES_CCM, B0 block size and 2 bytes
- * of AAD len
- * encoding need to be added to total AAD data
- * len */
+ /* In case of AES_CCM, start padding after B0
+ * block size plus 2 bytes of AAD len encoding
+ * plus AAD data len.
+ */
if (isSpCcm)
- aadDataLen += LAC_CIPHER_CCM_AAD_OFFSET;
+ aadLenInBytes +=
+ LAC_CIPHER_CCM_AAD_OFFSET;
- if ((aadDataLen % blockLen) != 0) {
- paddingLen =
- blockLen - (aadDataLen % blockLen);
+ if (aadLenInBytes % LAC_SYM_CIPHER_AAD_PADLEN !=
+ 0) {
+ paddingLen = LAC_SYM_CIPHER_AAD_PADLEN -
+ (aadLenInBytes %
+ LAC_SYM_CIPHER_AAD_PADLEN);
memset(&pRequest->pAdditionalAuthData
- [aadDataLen],
+ [aadLenInBytes],
0,
paddingLen);
}
diff --git a/sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c b/sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c
index f68853dc43a8..c09d75608bb4 100644
--- a/sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c
+++ b/sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
/**
*****************************************************************************
@@ -134,6 +134,11 @@ Lac_GetCyNumInstancesByType(
if (CPA_ACC_SVC_TYPE_CRYPTO_ASYM == accelerationServiceType ||
CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
list_temp = base_addr->asym_services;
+ if ((NULL == list_temp) &&
+ (CPA_ACC_SVC_TYPE_CRYPTO !=
+ accelerationServiceType)) {
+ list_temp = base_addr->crypto_services;
+ }
while (NULL != list_temp) {
instanceHandle = SalList_getObject(list_temp);
status = cpaCyInstanceGetInfo2(instanceHandle,
@@ -149,6 +154,11 @@ Lac_GetCyNumInstancesByType(
if (CPA_ACC_SVC_TYPE_CRYPTO_SYM == accelerationServiceType ||
CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
list_temp = base_addr->sym_services;
+ if ((NULL == list_temp) &&
+ (CPA_ACC_SVC_TYPE_CRYPTO !=
+ accelerationServiceType)) {
+ list_temp = base_addr->crypto_services;
+ }
while (NULL != list_temp) {
instanceHandle = SalList_getObject(list_temp);
status = cpaCyInstanceGetInfo2(instanceHandle,
@@ -292,6 +302,11 @@ Lac_GetCyInstancesByType(
if (CPA_ACC_SVC_TYPE_CRYPTO_ASYM == accelerationServiceType ||
CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
list_temp = base_addr->asym_services;
+ if ((NULL == list_temp) &&
+ (CPA_ACC_SVC_TYPE_CRYPTO !=
+ accelerationServiceType)) {
+ list_temp = base_addr->crypto_services;
+ }
while (NULL != list_temp) {
if (index > (numInstances - 1))
break;
@@ -312,6 +327,11 @@ Lac_GetCyInstancesByType(
if (CPA_ACC_SVC_TYPE_CRYPTO_SYM == accelerationServiceType ||
CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
list_temp = base_addr->sym_services;
+ if ((NULL == list_temp) &&
+ (CPA_ACC_SVC_TYPE_CRYPTO !=
+ accelerationServiceType)) {
+ list_temp = base_addr->crypto_services;
+ }
while (NULL != list_temp) {
if (index > (numInstances - 1))
break;
diff --git a/sys/dev/qat/qat_api/common/utils/lac_lock_free_stack.h b/sys/dev/qat/qat_api/common/utils/lac_lock_free_stack.h
index 49e2329c25a7..f1e65d428bff 100644
--- a/sys/dev/qat/qat_api/common/utils/lac_lock_free_stack.h
+++ b/sys/dev/qat/qat_api/common/utils/lac_lock_free_stack.h
@@ -1,33 +1,45 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#ifndef LAC_LOCK_FREE_STACK_H_1
#define LAC_LOCK_FREE_STACK_H_1
#include "lac_mem_pools.h"
+#ifdef __LP64__
+typedef unsigned int atomic_int __attribute__((mode(TI)));
+#else
+typedef unsigned int atomic_int __attribute__((mode(DI)));
+#endif
+
typedef union {
struct {
- uint64_t ctr : 16;
- uint64_t ptr : 48;
+ unsigned long ctr;
+ void *ptr;
};
- uint64_t atomic;
+ atomic_int atomic;
} pointer_t;
typedef struct {
volatile pointer_t top;
} lock_free_stack_t;
-static inline void *
-PTR(const uintptr_t addr48)
+static inline char
+lac_atomic_cmp_swap(volatile pointer_t *ptr,
+ pointer_t old_val,
+ pointer_t new_val)
{
-#ifdef __x86_64__
- const int64_t addr64 = addr48 << 16;
+ uint64_t new_high, new_low, old_high, old_low;
+ char res;
- /* Do arithmetic shift to restore kernel canonical address (if not NULL)
- */
- return (void *)(addr64 >> 16);
-#else
- return (void *)(addr48);
-#endif
+ old_low = old_val.ctr;
+ old_high = (uintptr_t)old_val.ptr;
+ new_low = new_val.ctr;
+ new_high = (uintptr_t)new_val.ptr;
+
+ __asm volatile("lock;cmpxchg16b\t%1"
+ : "=@cce"(res), "+m"(*ptr), "+a"(old_low), "+d"(old_high)
+ : "b"(new_low), "c"(new_high)
+ : "memory", "cc");
+ return (res);
}
static inline lac_mem_blk_t *
@@ -39,15 +51,13 @@ pop(lock_free_stack_t *stack)
do {
old_top.atomic = stack->top.atomic;
- next = PTR(old_top.ptr);
+ next = old_top.ptr;
if (NULL == next)
return next;
- new_top.ptr = (uintptr_t)next->pNext;
+ new_top.ptr = next->pNext;
new_top.ctr = old_top.ctr + 1;
- } while (!__sync_bool_compare_and_swap(&stack->top.atomic,
- old_top.atomic,
- new_top.atomic));
+ } while (!lac_atomic_cmp_swap(&stack->top, old_top, new_top));
return next;
}
@@ -60,18 +70,16 @@ push(lock_free_stack_t *stack, lac_mem_blk_t *val)
do {
old_top.atomic = stack->top.atomic;
- val->pNext = PTR(old_top.ptr);
- new_top.ptr = (uintptr_t)val;
+ val->pNext = old_top.ptr;
+ new_top.ptr = val;
new_top.ctr = old_top.ctr + 1;
- } while (!__sync_bool_compare_and_swap(&stack->top.atomic,
- old_top.atomic,
- new_top.atomic));
+ } while (!lac_atomic_cmp_swap(&stack->top, old_top, new_top));
}
static inline lock_free_stack_t
_init_stack(void)
{
- lock_free_stack_t stack = { { { 0 } } };
+ lock_free_stack_t stack = { .top.atomic = 0 };
return stack;
}
@@ -79,7 +87,7 @@ static inline lac_mem_blk_t *
top(lock_free_stack_t *stack)
{
pointer_t old_top = stack->top;
- lac_mem_blk_t *next = PTR(old_top.ptr);
+ lac_mem_blk_t *next = old_top.ptr;
return next;
}
diff --git a/sys/dev/qat/qat_api/device/dev_info.c b/sys/dev/qat/qat_api/device/dev_info.c
index d4eb9c3b6e0c..d88cd603ed02 100644
--- a/sys/dev/qat/qat_api/device/dev_info.c
+++ b/sys/dev/qat/qat_api/device/dev_info.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
/**
*****************************************************************************
* @file dev_info.c
@@ -34,25 +34,10 @@ cpaGetDeviceInfo(Cpa16U device, CpaDeviceInfo *deviceInfo)
{
CpaStatus status = CPA_STATUS_SUCCESS;
icp_accel_dev_t *pDevice = NULL;
- Cpa16U numDevicesAvail = 0;
Cpa32U capabilitiesMask = 0;
Cpa32U enabledServices = 0;
LAC_CHECK_NULL_PARAM(deviceInfo);
- status = icp_amgr_getNumInstances(&numDevicesAvail);
- /* Check if the application is not attempting to access a
- * device that does not exist.
- */
- if (0 == numDevicesAvail) {
- QAT_UTILS_LOG("Failed to retrieve number of devices!\n");
- return CPA_STATUS_FAIL;
- }
- if (device >= numDevicesAvail) {
- QAT_UTILS_LOG(
- "Invalid device access! Number of devices available: %d.\n",
- numDevicesAvail);
- return CPA_STATUS_FAIL;
- }
/* Clear the entire capability structure before initialising it */
memset(deviceInfo, 0x00, sizeof(CpaDeviceInfo));
@@ -62,7 +47,7 @@ cpaGetDeviceInfo(Cpa16U device, CpaDeviceInfo *deviceInfo)
pDevice = icp_adf_getAccelDevByAccelId(device);
if (NULL == pDevice) {
QAT_UTILS_LOG("Failed to retrieve device.\n");
- return status;
+ return CPA_STATUS_FAIL;
}
/* Device of interest is found, retrieve the information for it */
diff --git a/sys/dev/qat/qat_api/include/icp_sal_versions.h b/sys/dev/qat/qat_api/include/icp_sal_versions.h
index 0eb227ade09c..f1c63ad85cc9 100644
--- a/sys/dev/qat/qat_api/include/icp_sal_versions.h
+++ b/sys/dev/qat/qat_api/include/icp_sal_versions.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
/**
***************************************************************************
* @file icp_sal_versions.h
@@ -26,7 +26,7 @@
/* Part name and number of the accelerator device */
#define SAL_INFO2_DRIVER_SW_VERSION_MAJ_NUMBER 3
-#define SAL_INFO2_DRIVER_SW_VERSION_MIN_NUMBER 16
+#define SAL_INFO2_DRIVER_SW_VERSION_MIN_NUMBER 17
#define SAL_INFO2_DRIVER_SW_VERSION_PATCH_NUMBER 0
/**
diff --git a/sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c b/sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c
index 12cce62d7806..e20cec22901c 100644
--- a/sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c
+++ b/sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "adf_cfg.h"
#include "cpa.h"
#include "icp_accel_devices.h"
@@ -49,6 +49,7 @@ create_adf_dev_structure(struct adf_accel_dev *accel_dev)
adf->accelCapabilitiesMask = hw_data->accel_capabilities_mask;
adf->sku = hw_data->get_sku(hw_data);
adf->accel_dev = accel_dev;
+ adf->pciDevId = pci_get_device(accel_to_pci_dev(adf->accel_dev));
accel_dev->lac_dev = adf;
return adf;
diff --git a/sys/dev/qat/qat_api/qat_kernel/src/lac_symbols.c b/sys/dev/qat/qat_api/qat_kernel/src/lac_symbols.c
index d89ac14d0731..143afa76b6f9 100644
--- a/sys/dev/qat/qat_api/qat_kernel/src/lac_symbols.c
+++ b/sys/dev/qat/qat_api/qat_kernel/src/lac_symbols.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
/******************************************************************************
* @file lac_symbols.c
*
@@ -70,4 +70,8 @@ EXPORT_SYMBOL(icp_sal_iommu_get_remap_size);
EXPORT_SYMBOL(icp_sal_iommu_map);
EXPORT_SYMBOL(icp_sal_iommu_unmap);
+/* Device symbols */
+EXPORT_SYMBOL(cpaGetNumDevices);
+EXPORT_SYMBOL(cpaGetDeviceInfo);
+
EXPORT_SYMBOL(icp_sal_get_dc_error);
diff --git a/sys/dev/qat/qat_common/adf_accel_engine.c b/sys/dev/qat/qat_common/adf_accel_engine.c
index e712f750501c..4aeb32dc57f2 100644
--- a/sys/dev/qat/qat_common/adf_accel_engine.c
+++ b/sys/dev/qat/qat_common/adf_accel_engine.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -49,7 +49,7 @@ adf_ae_fw_load(struct adf_accel_dev *accel_dev)
u32 max_objs = 1;
const char *obj_name = NULL;
struct adf_mmp_version_s mmp_ver = { { 0 } };
- unsigned int cfg_ae_mask = 0;
+ u64 cfg_ae_mask = 0;
if (!hw_device->fw_name)
return 0;
@@ -206,7 +206,7 @@ adf_ae_stop(struct adf_accel_dev *accel_dev)
return 0;
for (ae = 0, ae_ctr = 0; ae < max_aes; ae++) {
- if (hw_data->ae_mask & (1 << ae)) {
+ if (hw_data->ae_mask & (1ULL << ae)) {
qat_hal_stop(loader_data->fw_loader, ae, 0xFF);
ae_ctr++;
}
diff --git a/sys/dev/qat/qat_common/adf_cfg_device.c b/sys/dev/qat/qat_common/adf_cfg_device.c
index 4860a4064b97..4c07434817ad 100644
--- a/sys/dev/qat/qat_common/adf_cfg_device.c
+++ b/sys/dev/qat/qat_common/adf_cfg_device.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "adf_cfg_instance.h"
#include "adf_cfg_section.h"
#include "adf_cfg_device.h"
@@ -373,7 +373,7 @@ adf_cfg_gen_dispatch_arbiter(struct adf_accel_dev *accel_dev,
u16 ena_srv_mask = GET_HW_DATA(accel_dev)->ring_to_svc_map;
for (engine = 0; engine < total_engines; engine++) {
- if (!(GET_HW_DATA(accel_dev)->ae_mask & (1 << engine)))
+ if (!(GET_HW_DATA(accel_dev)->ae_mask & (1ULL << engine)))
continue;
bits = 0;
/* ability_map is used to indicate the threads ability */
@@ -1015,7 +1015,8 @@ adf_cfg_static_conf(struct adf_accel_dev *accel_dev)
ret |= adf_cfg_section_add(accel_dev, ADF_GENERAL_SEC);
snprintf(key, ADF_CFG_MAX_KEY_LEN_IN_BYTES, ADF_SERVICES_ENABLED);
- if (strcmp(ADF_CFG_SYM_ASYM, accel_dev->cfg->cfg_services) == 0) {
+ if (strcmp(ADF_CFG_SYM_ASYM, accel_dev->cfg->cfg_services) == 0 &&
+ !(IS_QAT_GEN4(pci_get_device(GET_DEV(accel_dev))))) {
strncpy(value, ADF_CFG_CY, ADF_CFG_MAX_VAL_LEN_IN_BYTES);
} else {
strncpy(value,
diff --git a/sys/dev/qat/qat_common/adf_ctl_drv.c b/sys/dev/qat/qat_common/adf_ctl_drv.c
index 71b1e107cb5b..588a850b927a 100644
--- a/sys/dev/qat/qat_common/adf_ctl_drv.c
+++ b/sys/dev/qat/qat_common/adf_ctl_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -135,6 +135,7 @@ static int adf_ctl_ioctl_get_status(unsigned int cmd,
struct adf_hw_device_data *hw_data;
struct adf_dev_status_info *dev_info;
struct adf_accel_dev *accel_dev;
+ uint16_t banks_per_accel;
dev_info = (struct adf_dev_status_info *)arg;
@@ -143,12 +144,18 @@ static int adf_ctl_ioctl_get_status(unsigned int cmd,
return ENODEV;
hw_data = accel_dev->hw_device;
+
+ /* If the number of banks per accel exceeds the max value of uint8_t,
+ * set it to 0 to indicate that it's not valid.
+ */
+ banks_per_accel = hw_data->num_banks / hw_data->num_logical_accel;
+ banks_per_accel = banks_per_accel > UINT8_MAX ? 0 : banks_per_accel;
+
dev_info->state = adf_dev_started(accel_dev) ? DEV_UP : DEV_DOWN;
dev_info->num_ae = hw_data->get_num_aes(hw_data);
dev_info->num_accel = hw_data->get_num_accels(hw_data);
dev_info->num_logical_accel = hw_data->num_logical_accel;
- dev_info->banks_per_accel = hw_data->num_banks
- / hw_data->num_logical_accel;
+ dev_info->banks_per_accel = (uint8_t)banks_per_accel;
strlcpy(dev_info->name, hw_data->dev_class->name,
sizeof(dev_info->name));
dev_info->instance_id = hw_data->instance_id;
diff --git a/sys/dev/qat/qat_common/adf_freebsd_admin.c b/sys/dev/qat/qat_common/adf_freebsd_admin.c
index 8a8c890908c5..a2213c032d70 100644
--- a/sys/dev/qat/qat_common/adf_freebsd_admin.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_admin.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -204,10 +204,10 @@ int
adf_send_admin(struct adf_accel_dev *accel_dev,
struct icp_qat_fw_init_admin_req *req,
struct icp_qat_fw_init_admin_resp *resp,
- u32 ae_mask)
+ u64 ae_mask)
{
int i;
- unsigned int mask;
+ u64 mask;
for (i = 0, mask = ae_mask; mask; i++, mask >>= 1) {
if (!(mask & 1))
@@ -226,7 +226,7 @@ adf_init_me(struct adf_accel_dev *accel_dev)
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp resp;
struct adf_hw_device_data *hw_device = accel_dev->hw_device;
- u32 ae_mask = hw_device->ae_mask;
+ u64 ae_mask = hw_device->ae_mask;
explicit_bzero(&req, sizeof(req));
explicit_bzero(&resp, sizeof(resp));
@@ -250,7 +250,7 @@ adf_set_heartbeat_timer(struct adf_accel_dev *accel_dev)
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp resp;
struct adf_hw_device_data *hw_device = accel_dev->hw_device;
- u32 ae_mask = hw_device->ae_mask;
+ u64 ae_mask = hw_device->ae_mask;
u32 heartbeat_ticks;
explicit_bzero(&req, sizeof(req));
@@ -271,7 +271,7 @@ adf_get_dc_capabilities(struct adf_accel_dev *accel_dev, u32 *capabilities)
{
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp resp;
- u32 ae_mask = 1;
+ u64 ae_mask = 1;
explicit_bzero(&req, sizeof(req));
req.cmd_id = ICP_QAT_FW_COMP_CAPABILITY_GET;
@@ -290,7 +290,7 @@ adf_set_fw_constants(struct adf_accel_dev *accel_dev)
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp resp;
struct adf_hw_device_data *hw_device = accel_dev->hw_device;
- u32 ae_mask = hw_device->admin_ae_mask;
+ u64 ae_mask = hw_device->admin_ae_mask;
explicit_bzero(&req, sizeof(req));
req.cmd_id = ICP_QAT_FW_CONSTANTS_CFG;
@@ -306,13 +306,13 @@ adf_set_fw_constants(struct adf_accel_dev *accel_dev)
static int
adf_get_fw_status(struct adf_accel_dev *accel_dev,
- u8 *major,
- u8 *minor,
- u8 *patch)
+ u16 *major,
+ u16 *minor,
+ u32 *patch)
{
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp resp;
- u32 ae_mask = 1;
+ u64 ae_mask = 1;
explicit_bzero(&req, sizeof(req));
req.cmd_id = ICP_QAT_FW_STATUS_GET;
@@ -332,7 +332,7 @@ adf_get_fw_timestamp(struct adf_accel_dev *accel_dev, u64 *timestamp)
{
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp rsp;
- unsigned int ae_mask = 1;
+ u64 ae_mask = 1;
if (!accel_dev || !timestamp)
return EFAULT;
@@ -354,20 +354,19 @@ adf_get_fw_pke_stats(struct adf_accel_dev *accel_dev,
{
struct icp_qat_fw_init_admin_req req = { 0 };
struct icp_qat_fw_init_admin_resp resp = { 0 };
- unsigned long sym_ae_msk = 0;
- u8 sym_ae_msk_size = 0;
+ u64 sym_ae_msk = 0;
+ u64 mask;
u8 i = 0;
if (!suc_count || !unsuc_count)
return EFAULT;
sym_ae_msk = accel_dev->au_info->sym_ae_msk;
- sym_ae_msk_size =
- sizeof(accel_dev->au_info->sym_ae_msk) * BITS_PER_BYTE;
req.cmd_id = ICP_QAT_FW_PKE_REPLAY_STATS_GET;
- for_each_set_bit(i, &sym_ae_msk, sym_ae_msk_size)
- {
+ for (i = 0, mask = sym_ae_msk; mask; i++, mask >>= 1) {
+ if (!(mask & 1ULL))
+ continue;
memset(&resp, 0, sizeof(struct icp_qat_fw_init_admin_resp));
if (adf_put_admin_msg_sync(accel_dev, i, &req, &resp) ||
resp.status) {
diff --git a/sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c b/sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c
index e4ddbf489192..5f42f762aec3 100644
--- a/sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
@@ -40,7 +40,7 @@ static int qat_cnvnr_ctrs_dbg_read(SYSCTL_HANDLER_ARGS)
struct adf_hw_device_data *hw_device;
struct icp_qat_fw_init_admin_req request;
struct icp_qat_fw_init_admin_resp response;
- unsigned long dc_ae_msk = 0;
+ u64 dc_ae_msk = 0;
u8 num_aes = 0, ae = 0, error_type = 0, bytes_written = 0;
s16 latest_error = 0;
char report[MAX_REPORT_SIZE];
@@ -95,7 +95,7 @@ static int qat_cnvnr_ctrs_dbg_read(SYSCTL_HANDLER_ARGS)
num_aes = hw_device->get_num_aes(hw_device);
explicit_bzero(&request, sizeof(struct icp_qat_fw_init_admin_req));
for (ae = 0; ae < num_aes; ae++) {
- if (accel_dev->au_info && !test_bit(ae, &dc_ae_msk))
+ if (accel_dev->au_info && !(BIT_ULL(ae) & dc_ae_msk))
continue;
explicit_bzero(&response,
sizeof(struct icp_qat_fw_init_admin_resp));
diff --git a/sys/dev/qat/qat_common/adf_freebsd_uio.c b/sys/dev/qat/qat_common/adf_freebsd_uio.c
index 64efde72b4b8..bcbd71adb8df 100644
--- a/sys/dev/qat/qat_common/adf_freebsd_uio.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_uio.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -152,7 +152,7 @@ adf_add_mem_fd(struct adf_accel_dev *accel_dev, int mem_fd)
}
static vm_object_t
-adf_uio_map_bar(struct adf_accel_dev *accel_dev, uint8_t bank_offset)
+adf_uio_map_bar(struct adf_accel_dev *accel_dev, uint16_t bank_offset)
{
unsigned int ring_bundle_size, offset;
struct sglist *sg = NULL;
diff --git a/sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c b/sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c
index 041481435426..d40f2785e881 100644
--- a/sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -75,14 +75,6 @@ static int adf_sysctl_read_mmp_versions(SYSCTL_HANDLER_ARGS)
accel_dev->fw_versions.mmp_version_major,
accel_dev->fw_versions.mmp_version_minor,
accel_dev->fw_versions.mmp_version_patch);
-
- if (adf_dev_started(accel_dev))
- snprintf(mmp_version,
- ADF_CFG_MAX_VAL_LEN_IN_BYTES,
- "%d.%d.%d",
- accel_dev->fw_versions.mmp_version_major,
- accel_dev->fw_versions.mmp_version_minor,
- accel_dev->fw_versions.mmp_version_patch);
else
snprintf(mmp_version, ADF_CFG_MAX_VAL_LEN_IN_BYTES, "");
diff --git a/sys/dev/qat/qat_common/adf_fw_counters.c b/sys/dev/qat/qat_common/adf_fw_counters.c
index 1356fa89e775..78d1c30b6200 100644
--- a/sys/dev/qat/qat_common/adf_fw_counters.c
+++ b/sys/dev/qat/qat_common/adf_fw_counters.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
@@ -35,7 +35,7 @@ adf_get_fw_counters(struct adf_accel_dev *accel_dev)
{
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp resp;
- unsigned long ae_mask;
+ u64 ae_mask;
int i;
int ret = 0;
char aeidstr[16] = { 0 };
diff --git a/sys/dev/qat/qat_common/adf_gen2_hw_data.c b/sys/dev/qat/qat_common/adf_gen2_hw_data.c
index 92fd2b9bc8e5..cd94fd0e61d1 100644
--- a/sys/dev/qat/qat_common/adf_gen2_hw_data.c
+++ b/sys/dev/qat/qat_common/adf_gen2_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "adf_gen2_hw_data.h"
#include "icp_qat_hw.h"
@@ -76,9 +76,15 @@ write_csr_int_flag(struct resource *csr_base_addr, u32 bank, u32 value)
}
static void
-write_csr_int_srcsel(struct resource *csr_base_addr, u32 bank)
+write_csr_int_srcsel(struct resource *csr_base_addr,
+ u32 bank,
+ u32 idx,
+ u32 value)
{
- WRITE_CSR_INT_SRCSEL(csr_base_addr, bank);
+ if (0 == idx) {
+ value = ADF_BANK_INT_SRC_SEL_MASK_0;
+ }
+ WRITE_CSR_INT_SRCSEL(csr_base_addr, bank, idx, value);
}
static void
@@ -112,6 +118,11 @@ write_csr_ring_srv_arb_en(struct resource *csr_base_addr, u32 bank, u32 value)
}
static u32
+get_src_sel_mask(void)
+{
+ return ADF_BANK_INT_SRC_SEL_MASK;
+}
+static u32
get_int_col_ctl_enable_mask(void)
{
return ADF_RING_CSR_INT_COL_CTL_ENABLE;
@@ -126,6 +137,7 @@ adf_gen2_init_hw_csr_info(struct adf_hw_csr_info *csr_info)
csr_info->csr_addr_offset = ADF_RING_CSR_ADDR_OFFSET;
csr_info->ring_bundle_size = ADF_RING_BUNDLE_SIZE;
+ csr_info->num_rings_per_int_srcsel = ADF_RINGS_PER_INT_SRCSEL;
csr_ops->build_csr_ring_base_addr = build_csr_ring_base_addr;
csr_ops->read_csr_ring_head = read_csr_ring_head;
@@ -144,4 +156,5 @@ adf_gen2_init_hw_csr_info(struct adf_hw_csr_info *csr_info)
csr_ops->read_csr_ring_srv_arb_en = read_csr_ring_srv_arb_en;
csr_ops->write_csr_ring_srv_arb_en = write_csr_ring_srv_arb_en;
csr_ops->get_int_col_ctl_enable_mask = get_int_col_ctl_enable_mask;
+ csr_ops->get_src_sel_mask = get_src_sel_mask;
}
diff --git a/sys/dev/qat/qat_common/adf_gen4_hw_data.c b/sys/dev/qat/qat_common/adf_gen4_hw_data.c
index 00e149d17695..931e0530ad37 100644
--- a/sys/dev/qat/qat_common/adf_gen4_hw_data.c
+++ b/sys/dev/qat/qat_common/adf_gen4_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2021 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "adf_accel_devices.h"
#include "adf_common_drv.h"
#include "adf_gen4_hw_data.h"
@@ -80,9 +80,12 @@ write_csr_int_flag(struct resource *csr_base_addr, u32 bank, u32 value)
}
static void
-write_csr_int_srcsel(struct resource *csr_base_addr, u32 bank)
+write_csr_int_srcsel(struct resource *csr_base_addr,
+ u32 bank,
+ u32 idx,
+ u32 value)
{
- WRITE_CSR_INT_SRCSEL(csr_base_addr, bank);
+ WRITE_CSR_INT_SRCSEL(csr_base_addr, bank, idx, value);
}
static void
@@ -116,6 +119,11 @@ write_csr_ring_srv_arb_en(struct resource *csr_base_addr, u32 bank, u32 value)
}
static u32
+get_src_sel_mask(void)
+{
+ return ADF_BANK_INT_SRC_SEL_MASK;
+}
+static u32
get_int_col_ctl_enable_mask(void)
{
return ADF_RING_CSR_INT_COL_CTL_ENABLE;
@@ -130,6 +138,7 @@ adf_gen4_init_hw_csr_info(struct adf_hw_csr_info *csr_info)
csr_info->csr_addr_offset = ADF_RING_CSR_ADDR_OFFSET;
csr_info->ring_bundle_size = ADF_RING_BUNDLE_SIZE;
+ csr_info->num_rings_per_int_srcsel = ADF_RINGS_PER_INT_SRCSEL;
csr_ops->build_csr_ring_base_addr = build_csr_ring_base_addr;
csr_ops->read_csr_ring_head = read_csr_ring_head;
@@ -148,6 +157,7 @@ adf_gen4_init_hw_csr_info(struct adf_hw_csr_info *csr_info)
csr_ops->read_csr_ring_srv_arb_en = read_csr_ring_srv_arb_en;
csr_ops->write_csr_ring_srv_arb_en = write_csr_ring_srv_arb_en;
csr_ops->get_int_col_ctl_enable_mask = get_int_col_ctl_enable_mask;
+ csr_ops->get_src_sel_mask = get_src_sel_mask;
}
static int
diff --git a/sys/dev/qat/qat_common/adf_gen4_timer.c b/sys/dev/qat/qat_common/adf_gen4_timer.c
index 2c74d09418e5..16298b73fe4c 100644
--- a/sys/dev/qat/qat_common/adf_gen4_timer.c
+++ b/sys/dev/qat/qat_common/adf_gen4_timer.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "adf_accel_devices.h"
#include "adf_heartbeat.h"
#include "adf_common_drv.h"
@@ -31,7 +31,7 @@ adf_hb_irq_bh_handler(struct work_struct *work)
container_of(work, struct adf_hb_timer_data, hb_int_timer_work);
struct adf_accel_dev *accel_dev = hb_timer_data->accel_dev;
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
- u32 ae_mask = hw_data->ae_mask;
+ u64 ae_mask = hw_data->ae_mask;
if (!accel_dev->int_timer || !accel_dev->int_timer->enabled)
goto end;
@@ -57,7 +57,8 @@ end:
static void
timer_handler(struct timer_list *tl)
{
- struct adf_int_timer *int_timer = timer_container_of(int_timer, tl, timer);
+ struct adf_int_timer *int_timer =
+ timer_container_of(int_timer, tl, timer);
struct adf_accel_dev *accel_dev = int_timer->accel_dev;
struct adf_hb_timer_data *hb_timer_data = NULL;
u64 timeout_val = adf_get_next_timeout(int_timer->timeout_val);
diff --git a/sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c b/sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c
index bfa778ea301b..2d35b19e7f33 100644
--- a/sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c
+++ b/sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "adf_accel_devices.h"
#include "adf_gen4vf_hw_csr_data.h"
@@ -76,9 +76,12 @@ write_csr_int_flag(struct resource *csr_base_addr, u32 bank, u32 value)
}
static void
-write_csr_int_srcsel(struct resource *csr_base_addr, u32 bank)
+write_csr_int_srcsel(struct resource *csr_base_addr,
+ u32 bank,
+ u32 idx,
+ u32 value)
{
- WRITE_CSR_INT_SRCSEL_GEN4VF(csr_base_addr, bank);
+ WRITE_CSR_INT_SRCSEL_GEN4VF(csr_base_addr, bank, idx, value);
}
static void
diff --git a/sys/dev/qat/qat_common/adf_heartbeat.c b/sys/dev/qat/qat_common/adf_heartbeat.c
index 2cfc7ac3b603..f77115100243 100644
--- a/sys/dev/qat/qat_common/adf_heartbeat.c
+++ b/sys/dev/qat/qat_common/adf_heartbeat.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <sys/types.h>
#include <linux/random.h>
#include "qat_freebsd.h"
@@ -114,7 +114,7 @@ adf_get_heartbeat_status(struct adf_accel_dev *accel_dev)
int ret = 0;
size_t ae, thr;
u16 *count_s;
- unsigned long ae_mask = 0;
+ u64 ae_mask = 0;
/*
* Memory layout of Heartbeat
diff --git a/sys/dev/qat/qat_common/adf_transport.c b/sys/dev/qat/qat_common/adf_transport.c
index e75e2e3b594a..03844796371d 100644
--- a/sys/dev/qat/qat_common/adf_transport.c
+++ b/sys/dev/qat/qat_common/adf_transport.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -574,13 +574,15 @@ adf_init_bank(struct adf_accel_dev *accel_dev,
struct resource *csr_addr)
{
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
- struct adf_hw_csr_ops *csr_ops = &hw_data->csr_info.csr_ops;
+ struct adf_hw_csr_info *csr_info = &hw_data->csr_info;
+ struct adf_hw_csr_ops *csr_ops = &csr_info->csr_ops;
struct adf_etr_ring_data *ring;
struct adf_etr_ring_data *tx_ring;
u32 i, coalesc_enabled = 0;
u8 num_rings_per_bank = hw_data->num_rings_per_bank;
u32 irq_mask = BIT(num_rings_per_bank) - 1;
u32 size = 0;
+ u32 num_rings_per_int_srcsel = csr_info->num_rings_per_int_srcsel;
explicit_bzero(bank, sizeof(*bank));
bank->bank_number = bank_num;
@@ -634,7 +636,11 @@ adf_init_bank(struct adf_accel_dev *accel_dev,
}
csr_ops->write_csr_int_flag(csr_addr, bank_num, irq_mask);
- csr_ops->write_csr_int_srcsel(csr_addr, bank_num);
+ for (i = 0; i < num_rings_per_bank / num_rings_per_int_srcsel; i++)
+ csr_ops->write_csr_int_srcsel(csr_addr,
+ bank_num,
+ i,
+ csr_ops->get_src_sel_mask());
return 0;
err:
for (i = 0; i < num_rings_per_bank; i++) {
diff --git a/sys/dev/qat/qat_common/qat_hal.c b/sys/dev/qat/qat_common/qat_hal.c
index 75190246ee1d..113d2af64f16 100644
--- a/sys/dev/qat/qat_common/qat_hal.c
+++ b/sys/dev/qat/qat_common/qat_hal.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -1017,7 +1017,7 @@ qat_hal_init(struct adf_accel_dev *accel_dev)
unsigned int sram_offset = 0;
unsigned int max_en_ae_id = 0;
int ret = 0;
- unsigned long ae_mask;
+ u64 ae_mask;
struct icp_qat_fw_loader_handle *handle;
if (!accel_dev) {
return EFAULT;
@@ -1066,8 +1066,8 @@ qat_hal_init(struct adf_accel_dev *accel_dev)
handle->hal_handle =
malloc(sizeof(*handle->hal_handle), M_QAT, M_WAITOK | M_ZERO);
handle->hal_handle->revision_id = accel_dev->accel_pci_dev.revid;
- handle->hal_handle->ae_mask = hw_data->ae_mask;
- handle->hal_handle->admin_ae_mask = hw_data->admin_ae_mask;
+ handle->hal_handle->ae_mask = (u32)hw_data->ae_mask;
+ handle->hal_handle->admin_ae_mask = (u32)hw_data->admin_ae_mask;
handle->hal_handle->slice_mask = hw_data->accel_mask;
handle->cfg_ae_mask = 0xFFFFFFFF;
/* create AE objects */
diff --git a/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.c b/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.c
index 68eb54d457b3..595c5c6f98ce 100644
--- a/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <adf_accel_devices.h>
#include <adf_common_drv.h>
#include <adf_cfg.h>
@@ -39,7 +39,7 @@ get_accel_mask(struct adf_accel_dev *accel_dev)
ADF_200XX_ACCELERATORS_MASK;
}
-static u32
+static u64
get_ae_mask(struct adf_accel_dev *accel_dev)
{
device_t pdev = accel_dev->accel_pci_dev.pci_dev;
@@ -89,7 +89,7 @@ get_num_aes(struct adf_hw_device_data *self)
return 0;
for (i = 0; i < ADF_200XX_MAX_ACCELENGINES; i++) {
- if (self->ae_mask & (1 << i))
+ if (self->ae_mask & (1ULL << i))
ctr++;
}
return ctr;
@@ -133,7 +133,7 @@ adf_get_arbiter_mapping(struct adf_accel_dev *accel_dev,
for (i = 0; i < ADF_200XX_MAX_ACCELENGINES; i++) {
thrd_to_arb_map_gen[i] = 0;
- if (hw_device->ae_mask & (1 << i))
+ if (hw_device->ae_mask & (1ULL << i))
thrd_to_arb_map_gen[i] = thrd_to_arb_map[i];
}
adf_cfg_gen_dispatch_arbiter(accel_dev,
@@ -300,12 +300,12 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
struct adf_bar *misc_bar = &GET_BARS(accel_dev)[ADF_200XX_PMISC_BAR];
struct resource *csr = misc_bar->virt_addr;
unsigned int val, i;
- unsigned int mask;
+ u64 mask;
/* Enable Accel Engine error detection & correction */
mask = hw_device->ae_mask;
for (i = 0; mask; i++, mask >>= 1) {
- if (!(mask & 1))
+ if (!(mask & 1ULL))
continue;
val = ADF_CSR_RD(csr, ADF_200XX_AE_CTX_ENABLES(i));
val |= ADF_200XX_ENABLE_AE_ECC_ERR;
@@ -316,9 +316,9 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
}
/* Enable shared memory error detection & correction */
- mask = hw_device->accel_mask;
+ mask = (u64)hw_device->accel_mask;
for (i = 0; mask; i++, mask >>= 1) {
- if (!(mask & 1))
+ if (!(mask & 1ULL))
continue;
val = ADF_CSR_RD(csr, ADF_200XX_UERRSSMSH(i));
val |= ADF_200XX_ERRSSMSH_EN;
@@ -445,7 +445,7 @@ get_objs_num(struct adf_accel_dev *accel_dev)
return 1;
}
-static uint32_t
+static uint64_t
get_obj_cfg_ae_mask(struct adf_accel_dev *accel_dev,
enum adf_accel_unit_services services)
{
diff --git a/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c b/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
index 816010dc06f8..1c102d2c56f0 100644
--- a/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -151,7 +151,7 @@ adf_attach(device_t dev)
accel_pci_dev->sku = hw_data->get_sku(hw_data);
/* If the device has no acceleration engines then ignore it. */
if (!hw_data->accel_mask || !hw_data->ae_mask ||
- (~hw_data->ae_mask & 0x01)) {
+ (~hw_data->ae_mask & 0x01ULL)) {
device_printf(dev, "No acceleration units found\n");
ret = ENXIO;
goto out_err;
diff --git a/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c b/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c
index 49e1e1859e78..66987dad3217 100644
--- a/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <linux/iopoll.h>
#include <adf_accel_devices.h>
#include <adf_cfg.h>
@@ -86,17 +86,17 @@ struct adf_enabled_services {
u16 rng_to_svc_msk;
};
-static struct adf_enabled_services adf_4xxx_svcs[] =
- { { "dc", ADF_4XXX_DC },
- { "sym", ADF_4XXX_SYM },
- { "asym", ADF_4XXX_ASYM },
- { "dc;asym", ADF_4XXX_ASYM_DC },
- { "asym;dc", ADF_4XXX_ASYM_DC },
- { "sym;dc", ADF_4XXX_SYM_DC },
- { "dc;sym", ADF_4XXX_SYM_DC },
- { "asym;sym", ADF_4XXX_ASYM_SYM },
- { "sym;asym", ADF_4XXX_ASYM_SYM },
- { "cy", ADF_4XXX_ASYM_SYM } };
+static struct adf_enabled_services adf_4xxx_svcs[] = {
+ { "dc", ADF_4XXX_DC },
+ { "sym", ADF_4XXX_SYM },
+ { "asym", ADF_4XXX_ASYM },
+ { "dc;asym", ADF_4XXX_ASYM_DC },
+ { "asym;dc", ADF_4XXX_ASYM_DC },
+ { "sym;dc", ADF_4XXX_SYM_DC },
+ { "dc;sym", ADF_4XXX_SYM_DC },
+ { "asym;sym", ADF_4XXX_ASYM_SYM },
+ { "sym;asym", ADF_4XXX_ASYM_SYM }
+};
static struct adf_hw_device_class adf_4xxx_class = {
.name = ADF_4XXX_DEVICE_NAME,
@@ -110,7 +110,7 @@ get_accel_mask(struct adf_accel_dev *accel_dev)
return ADF_4XXX_ACCELERATORS_MASK;
}
-static u32
+static u64
get_ae_mask(struct adf_accel_dev *accel_dev)
{
u32 fusectl4 = accel_dev->hw_device->fuses;
@@ -164,7 +164,7 @@ get_num_aes(struct adf_hw_device_data *self)
if (!self || !self->ae_mask)
return 0;
- return hweight32(self->ae_mask);
+ return hweight64(self->ae_mask);
}
static u32
@@ -577,11 +577,11 @@ get_objs_num(struct adf_accel_dev *accel_dev)
return ADF_4XXX_MAX_OBJ;
}
-static uint32_t
+static uint64_t
get_obj_cfg_ae_mask(struct adf_accel_dev *accel_dev,
enum adf_accel_unit_services service)
{
- u32 ae_mask = 0;
+ u64 ae_mask = 0;
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
u32 num_au = hw_data->get_num_accel_units(hw_data);
struct adf_accel_unit *accel_unit = accel_dev->au_info->au;
@@ -654,7 +654,7 @@ adf_get_dc_extcapabilities(struct adf_accel_dev *accel_dev, u32 *capabilities)
u8 i;
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
u8 num_au = hw_data->get_num_accel_units(hw_data);
- u32 first_dc_ae = 0;
+ u64 first_dc_ae = 0;
for (i = 0; i < num_au; i++) {
if (accel_dev->au_info->au[i].services &
@@ -683,13 +683,13 @@ adf_get_dc_extcapabilities(struct adf_accel_dev *accel_dev, u32 *capabilities)
static int
adf_get_fw_status(struct adf_accel_dev *accel_dev,
- u8 *major,
- u8 *minor,
- u8 *patch)
+ u16 *major,
+ u16 *minor,
+ u32 *patch)
{
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp resp;
- u32 ae_mask = 1;
+ u64 ae_mask = 1;
memset(&req, 0, sizeof(req));
memset(&resp, 0, sizeof(resp));
@@ -712,8 +712,8 @@ adf_4xxx_send_admin_init(struct adf_accel_dev *accel_dev)
struct icp_qat_fw_init_admin_req req;
struct icp_qat_fw_init_admin_resp resp;
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
- u32 ae_mask = hw_data->ae_mask;
- u32 admin_ae_mask = hw_data->admin_ae_mask;
+ u64 ae_mask = hw_data->ae_mask;
+ u64 admin_ae_mask = hw_data->admin_ae_mask;
u8 num_au = hw_data->get_num_accel_units(hw_data);
u8 i;
u32 dc_capabilities = 0;
@@ -806,7 +806,7 @@ get_au_by_ae(struct adf_accel_dev *accel_dev, int ae_num)
return NULL;
for (i = 0; i < ADF_4XXX_MAX_ACCELUNITS; i++)
- if (accel_unit[i].ae_mask & BIT(ae_num))
+ if (accel_unit[i].ae_mask & BIT_ULL(ae_num))
return &accel_unit[i];
return NULL;
@@ -889,7 +889,7 @@ adf_get_arbiter_mapping(struct adf_accel_dev *accel_dev,
struct adf_hw_device_data *hw_device = accel_dev->hw_device;
for (i = 1; i < ADF_4XXX_MAX_ACCELENGINES; i++) {
- if (~hw_device->ae_mask & (1 << i))
+ if (~hw_device->ae_mask & (1ULL << i))
thrd_to_arb_map[i] = 0;
}
adf_4xxx_cfg_gen_dispatch_arbiter(accel_dev, thrd_to_arb_map_gen);
diff --git a/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c b/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
index f9ad39fa45f0..1173ba9d891d 100644
--- a/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -210,7 +210,7 @@ adf_attach(device_t dev)
accel_pci_dev->sku = hw_data->get_sku(hw_data);
/* If the device has no acceleration engines then ignore it. */
if (!hw_data->accel_mask || !hw_data->ae_mask ||
- (~hw_data->ae_mask & 0x01)) {
+ (~hw_data->ae_mask & 0x01ULL)) {
device_printf(dev, "No acceleration units found\n");
ret = ENXIO;
goto out_err;
diff --git a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c
index 37de24ba9e23..39040643798f 100644
--- a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <adf_accel_devices.h>
#include <adf_cfg.h>
#include <adf_common_drv.h>
@@ -56,17 +56,17 @@ struct adf_enabled_services {
u16 rng_to_svc_msk;
};
-static struct adf_enabled_services adf_4xxxiov_svcs[] =
- { { "dc", ADF_4XXXIOV_DC },
- { "sym", ADF_4XXXIOV_SYM },
- { "asym", ADF_4XXXIOV_ASYM },
- { "dc;asym", ADF_4XXXIOV_ASYM_DC },
- { "asym;dc", ADF_4XXXIOV_ASYM_DC },
- { "sym;dc", ADF_4XXXIOV_SYM_DC },
- { "dc;sym", ADF_4XXXIOV_SYM_DC },
- { "asym;sym", ADF_4XXXIOV_ASYM_SYM },
- { "sym;asym", ADF_4XXXIOV_ASYM_SYM },
- { "cy", ADF_4XXXIOV_ASYM_SYM } };
+static struct adf_enabled_services adf_4xxxiov_svcs[] = {
+ { "dc", ADF_4XXXIOV_DC },
+ { "sym", ADF_4XXXIOV_SYM },
+ { "asym", ADF_4XXXIOV_ASYM },
+ { "dc;asym", ADF_4XXXIOV_ASYM_DC },
+ { "asym;dc", ADF_4XXXIOV_ASYM_DC },
+ { "sym;dc", ADF_4XXXIOV_SYM_DC },
+ { "dc;sym", ADF_4XXXIOV_SYM_DC },
+ { "asym;sym", ADF_4XXXIOV_ASYM_SYM },
+ { "sym;asym", ADF_4XXXIOV_ASYM_SYM }
+};
static u32
get_accel_mask(struct adf_accel_dev *accel_dev)
@@ -74,7 +74,7 @@ get_accel_mask(struct adf_accel_dev *accel_dev)
return ADF_4XXXIOV_ACCELERATORS_MASK;
}
-static u32
+static u64
get_ae_mask(struct adf_accel_dev *accel_dev)
{
return ADF_4XXXIOV_ACCELENGINES_MASK;
diff --git a/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.c b/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.c
index 40309cbf65ca..d818d5aea012 100644
--- a/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <adf_accel_devices.h>
#include <adf_common_drv.h>
#include <adf_cfg.h>
@@ -38,7 +38,7 @@ get_accel_mask(struct adf_accel_dev *accel_dev)
ADF_C3XXX_ACCELERATORS_MASK;
}
-static u32
+static u64
get_ae_mask(struct adf_accel_dev *accel_dev)
{
device_t pdev = accel_dev->accel_pci_dev.pci_dev;
@@ -88,7 +88,7 @@ get_num_aes(struct adf_hw_device_data *self)
return 0;
for (i = 0; i < ADF_C3XXX_MAX_ACCELENGINES; i++) {
- if (self->ae_mask & (1 << i))
+ if (self->ae_mask & (1ULL << i))
ctr++;
}
return ctr;
@@ -132,7 +132,7 @@ adf_get_arbiter_mapping(struct adf_accel_dev *accel_dev,
for (i = 0; i < ADF_C3XXX_MAX_ACCELENGINES; i++) {
thrd_to_arb_map_gen[i] = 0;
- if (hw_device->ae_mask & (1 << i))
+ if (hw_device->ae_mask & (1ULL << i))
thrd_to_arb_map_gen[i] = thrd_to_arb_map[i];
}
adf_cfg_gen_dispatch_arbiter(accel_dev,
@@ -180,12 +180,12 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
struct adf_bar *misc_bar = &GET_BARS(accel_dev)[ADF_C3XXX_PMISC_BAR];
struct resource *csr = misc_bar->virt_addr;
unsigned int val, i;
- unsigned int mask;
+ u64 mask;
/* Enable Accel Engine error detection & correction */
mask = hw_device->ae_mask;
for (i = 0; mask; i++, mask >>= 1) {
- if (!(mask & 1))
+ if (!(mask & 1ULL))
continue;
val = ADF_CSR_RD(csr, ADF_C3XXX_AE_CTX_ENABLES(i));
val |= ADF_C3XXX_ENABLE_AE_ECC_ERR;
@@ -196,9 +196,9 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
}
/* Enable shared memory error detection & correction */
- mask = hw_device->accel_mask;
+ mask = (u64)hw_device->accel_mask;
for (i = 0; mask; i++, mask >>= 1) {
- if (!(mask & 1))
+ if (!(mask & 1ULL))
continue;
val = ADF_CSR_RD(csr, ADF_C3XXX_UERRSSMSH(i));
val |= ADF_C3XXX_ERRSSMSH_EN;
@@ -320,7 +320,7 @@ get_objs_num(struct adf_accel_dev *accel_dev)
return 1;
}
-static uint32_t
+static uint64_t
get_obj_cfg_ae_mask(struct adf_accel_dev *accel_dev,
enum adf_accel_unit_services services)
{
diff --git a/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c b/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
index b91daefb45d4..4c570c02f627 100644
--- a/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -139,7 +139,7 @@ adf_attach(device_t dev)
accel_pci_dev->sku = hw_data->get_sku(hw_data);
/* If the device has no acceleration engines then ignore it. */
if (!hw_data->accel_mask || !hw_data->ae_mask ||
- ((~hw_data->ae_mask) & 0x01)) {
+ ((~hw_data->ae_mask) & 0x01ULL)) {
device_printf(dev, "No acceleration units found\n");
ret = ENXIO;
goto out_err;
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c
index a2bb36727fd4..c5d59a25ff8f 100644
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "adf_c4xxx_hw_data.h"
#include <linux/kernel.h>
#include <linux/types.h>
@@ -20,14 +20,14 @@
#define AE_CONFIG_DBG_FILE "ae_config"
static u8
-find_first_me_index(const u32 au_mask)
+find_first_me_index(const u64 au_mask)
{
u8 i;
- u32 mask = au_mask;
+ u64 mask = au_mask;
/* Retrieve the index of the first ME of an accel unit */
for (i = 0; i < ADF_C4XXX_MAX_ACCELENGINES; i++) {
- if (mask & BIT(i))
+ if (mask & BIT_ULL(i))
return i;
}
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c
index d2969c1b06ed..e06d52db2b00 100644
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <linux/atomic.h>
#include <linux/compiler.h>
#include <adf_accel_devices.h>
@@ -140,7 +140,7 @@ get_accel_mask(struct adf_accel_dev *accel_dev)
return (~(fusectl0 | softstrappull0)) & ADF_C4XXX_ACCELERATORS_MASK;
}
-static u32
+static u64
get_ae_mask(struct adf_accel_dev *accel_dev)
{
device_t pdev = accel_dev->accel_pci_dev.pci_dev;
@@ -166,7 +166,7 @@ get_num_accels(struct adf_hw_device_data *self)
static u32
get_num_aes(struct adf_hw_device_data *self)
{
- return self ? hweight32(self->ae_mask) : 0;
+ return self ? hweight64(self->ae_mask) : 0;
}
static u32
@@ -637,7 +637,7 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
struct adf_bar *misc_bar = &GET_BARS(accel_dev)[ADF_C4XXX_PMISC_BAR];
struct resource *csr = misc_bar->virt_addr;
unsigned int val, i = 0;
- unsigned long ae_mask;
+ u64 ae_mask;
unsigned long accel_mask;
ae_mask = hw_device->ae_mask;
@@ -1251,7 +1251,7 @@ c4xxx_init_aram_config(struct adf_accel_dev *accel_dev)
* inform firmware which ME is egress
*/
aram_info->inline_direction_egress_mask =
- accel_dev->au_info->inline_egress_msk;
+ (u32)accel_dev->au_info->inline_egress_msk;
/* User profile is valid, we can now add it
* in the ARAM partition table
@@ -1259,13 +1259,13 @@ c4xxx_init_aram_config(struct adf_accel_dev *accel_dev)
aram_info->inline_congest_mngt_profile = profile;
}
/* Initialise DC ME mask, "1" = ME is used for DC operations */
- aram_info->dc_ae_mask = accel_dev->au_info->dc_ae_msk;
+ aram_info->dc_ae_mask = (u32)accel_dev->au_info->dc_ae_msk;
/* Initialise CY ME mask, "1" = ME is used for CY operations
* Since asym service can also be enabled on inline AEs, here
* we use the sym ae mask for configuring the cy_ae_msk
*/
- aram_info->cy_ae_mask = accel_dev->au_info->sym_ae_msk;
+ aram_info->cy_ae_mask = (u32)accel_dev->au_info->sym_ae_msk;
/* Configure number of long words in the ARAM */
aram_info->num_aram_lw_entries = ADF_C4XXX_NUM_ARAM_ENTRIES;
@@ -1736,8 +1736,9 @@ adf_set_inline_ae_mask(struct adf_accel_dev *accel_dev)
struct adf_accel_unit_info *au_info = accel_dev->au_info;
struct adf_accel_unit *accel_unit = accel_dev->au_info->au;
u32 num_ingress_ae = 0;
- u32 ingress_msk = 0;
- u32 i, j, ae_mask;
+ u64 ingress_msk = 0;
+ u32 i, j;
+ u64 ae_mask;
if (adf_get_inline_config(accel_dev, &num_ingress_ae))
return EFAULT;
@@ -1751,11 +1752,11 @@ adf_set_inline_ae_mask(struct adf_accel_dev *accel_dev)
au_info->asym_ae_msk |= accel_unit[i].ae_mask;
ae_mask = accel_unit[i].ae_mask;
while (num_ingress_ae && ae_mask) {
- if (ae_mask & 1) {
- ingress_msk |= BIT(j);
+ if (ae_mask & 1ULL) {
+ ingress_msk |= BIT_ULL(j);
num_ingress_ae--;
}
- ae_mask = ae_mask >> 1;
+ ae_mask = ae_mask >> 1ULL;
j++;
}
au_info->inline_ingress_msk |= ingress_msk;
@@ -2071,11 +2072,11 @@ get_objs_num(struct adf_accel_dev *accel_dev)
return (max_srv_id + 1);
}
-static uint32_t
+static uint64_t
get_obj_cfg_ae_mask(struct adf_accel_dev *accel_dev,
enum adf_accel_unit_services service)
{
- u32 ae_mask = 0;
+ u64 ae_mask = 0;
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
u32 num_au = hw_data->get_num_accel_units(hw_data);
struct adf_accel_unit *accel_unit = accel_dev->au_info->au;
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_res_part.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_res_part.c
index 164c5e44ff36..af1c8a162577 100644
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_res_part.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_res_part.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "adf_accel_devices.h"
#include "adf_common_drv.h"
#include "adf_cfg_common.h"
@@ -125,7 +125,7 @@ adf_init_arb_c4xxx(struct adf_accel_dev *accel_dev)
struct resource *csr = accel_dev->transport->banks[0].csr_addr;
struct adf_accel_unit_info *au_info = accel_dev->au_info;
u32 i;
- unsigned long ae_mask;
+ u64 ae_mask;
u32 partitions_mask = 0;
/* invoke common adf_init_arb */
@@ -145,15 +145,15 @@ adf_init_arb_c4xxx(struct adf_accel_dev *accel_dev)
*/
for_each_set_bit(i, &ae_mask, ADF_C4XXX_MAX_ACCELENGINES)
{
- if (BIT(i) & au_info->sym_ae_msk)
+ if (BIT_ULL(i) & au_info->sym_ae_msk)
adf_enable_sym_threads(accel_dev,
i,
ADF_C4XXX_PART_SYM);
- if (BIT(i) & au_info->asym_ae_msk)
+ if (BIT_ULL(i) & au_info->asym_ae_msk)
adf_enable_asym_threads(accel_dev,
i,
ADF_C4XXX_PART_ASYM);
- if (BIT(i) & au_info->dc_ae_msk)
+ if (BIT_ULL(i) & au_info->dc_ae_msk)
adf_enable_dc_threads(accel_dev, i, ADF_C4XXX_PART_DC);
}
@@ -169,7 +169,7 @@ adf_exit_arb_c4xxx(struct adf_accel_dev *accel_dev)
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
struct resource *csr;
u32 i;
- unsigned long ae_mask;
+ u64 ae_mask;
if (!accel_dev->transport)
return;
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
index f333101cce50..6884656011b4 100644
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -135,7 +135,7 @@ adf_attach(device_t dev)
/* If the device has no acceleration engines then ignore it. */
if (!hw_data->accel_mask || !hw_data->ae_mask ||
- (~hw_data->ae_mask & 0x01)) {
+ (~hw_data->ae_mask & 0x01ULL)) {
device_printf(dev, "No acceleration units found\n");
ret = ENXIO;
goto out_err;
diff --git a/sys/dev/qat/qat_hw/qat_c62x/adf_c62x_hw_data.c b/sys/dev/qat/qat_hw/qat_c62x/adf_c62x_hw_data.c
index 4e668b918b07..349e1d1808d8 100644
--- a/sys/dev/qat/qat_hw/qat_c62x/adf_c62x_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_c62x/adf_c62x_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include <adf_accel_devices.h>
#include <adf_common_drv.h>
#include <adf_cfg.h>
@@ -40,7 +40,7 @@ get_accel_mask(struct adf_accel_dev *accel_dev)
ADF_C62X_ACCELERATORS_MASK;
}
-static u32
+static u64
get_ae_mask(struct adf_accel_dev *accel_dev)
{
device_t pdev = accel_dev->accel_pci_dev.pci_dev;
@@ -90,7 +90,7 @@ get_num_aes(struct adf_hw_device_data *self)
return 0;
for (i = 0; i < ADF_C62X_MAX_ACCELENGINES; i++) {
- if (self->ae_mask & (1 << i))
+ if (self->ae_mask & (1ULL << i))
ctr++;
}
return ctr;
@@ -136,7 +136,7 @@ adf_get_arbiter_mapping(struct adf_accel_dev *accel_dev,
for (i = 0; i < ADF_C62X_MAX_ACCELENGINES; i++) {
thrd_to_arb_map_gen[i] = 0;
- if (hw_device->ae_mask & (1 << i))
+ if (hw_device->ae_mask & (1ULL << i))
thrd_to_arb_map_gen[i] = thrd_to_arb_map[i];
}
adf_cfg_gen_dispatch_arbiter(accel_dev,
@@ -184,12 +184,12 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
struct adf_bar *misc_bar = &GET_BARS(accel_dev)[ADF_C62X_PMISC_BAR];
struct resource *csr = misc_bar->virt_addr;
unsigned int val, i;
- unsigned int mask;
+ u64 mask;
/* Enable Accel Engine error detection & correction */
mask = hw_device->ae_mask;
for (i = 0; mask; i++, mask >>= 1) {
- if (!(mask & 1))
+ if (!(mask & 1ULL))
continue;
val = ADF_CSR_RD(csr, ADF_C62X_AE_CTX_ENABLES(i));
val |= ADF_C62X_ENABLE_AE_ECC_ERR;
@@ -200,9 +200,9 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
}
/* Enable shared memory error detection & correction */
- mask = hw_device->accel_mask;
+ mask = (u64)hw_device->accel_mask;
for (i = 0; mask; i++, mask >>= 1) {
- if (!(mask & 1))
+ if (!(mask & 1ULL))
continue;
val = ADF_CSR_RD(csr, ADF_C62X_UERRSSMSH(i));
val |= ADF_C62X_ERRSSMSH_EN;
@@ -325,7 +325,7 @@ get_objs_num(struct adf_accel_dev *accel_dev)
return 1;
}
-static uint32_t
+static uint64_t
get_obj_cfg_ae_mask(struct adf_accel_dev *accel_dev,
enum adf_accel_unit_services services)
{
diff --git a/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c b/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
index 955f6c48a071..54c507c540c6 100644
--- a/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -138,7 +138,7 @@ adf_attach(device_t dev)
accel_pci_dev->sku = hw_data->get_sku(hw_data);
/* If the device has no acceleration engines then ignore it. */
if (!hw_data->accel_mask || !hw_data->ae_mask ||
- ((~hw_data->ae_mask) & 0x01)) {
+ ((~hw_data->ae_mask) & 0x01ULL)) {
device_printf(dev, "No acceleration units found\n");
ret = ENXIO;
goto out_err;
diff --git a/sys/dev/qat/qat_hw/qat_dh895xcc/adf_dh895xcc_hw_data.c b/sys/dev/qat/qat_hw/qat_dh895xcc/adf_dh895xcc_hw_data.c
index 7985d07a403b..7e639af8bb1c 100644
--- a/sys/dev/qat/qat_hw/qat_dh895xcc/adf_dh895xcc_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_dh895xcc/adf_dh895xcc_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include <adf_accel_devices.h>
@@ -42,7 +42,7 @@ get_accel_mask(struct adf_accel_dev *accel_dev)
ADF_DH895XCC_ACCELERATORS_MASK;
}
-static u32
+static u64
get_ae_mask(struct adf_accel_dev *accel_dev)
{
device_t pdev = accel_dev->accel_pci_dev.pci_dev;
@@ -77,7 +77,7 @@ get_num_aes(struct adf_hw_device_data *self)
return 0;
for (i = 0; i < ADF_DH895XCC_MAX_ACCELENGINES; i++) {
- if (self->ae_mask & (1 << i))
+ if (self->ae_mask & (1ULL << i))
ctr++;
}
return ctr;
@@ -197,12 +197,12 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
struct adf_bar *misc_bar = &GET_BARS(accel_dev)[ADF_DH895XCC_PMISC_BAR];
struct resource *csr = misc_bar->virt_addr;
unsigned int val, i;
- unsigned int mask;
+ u64 mask;
/* Enable Accel Engine error detection & correction */
mask = hw_device->ae_mask;
for (i = 0; mask; i++, mask >>= 1) {
- if (!(mask & 1))
+ if (!(mask & 1ULL))
continue;
val = ADF_CSR_RD(csr, ADF_DH895XCC_AE_CTX_ENABLES(i));
val |= ADF_DH895XCC_ENABLE_AE_ECC_ERR;
@@ -213,9 +213,9 @@ adf_enable_error_correction(struct adf_accel_dev *accel_dev)
}
/* Enable shared memory error detection & correction */
- mask = hw_device->accel_mask;
+ mask = (u64)hw_device->accel_mask;
for (i = 0; mask; i++, mask >>= 1) {
- if (!(mask & 1))
+ if (!(mask & 1ULL))
continue;
val = ADF_CSR_RD(csr, ADF_DH895XCC_UERRSSMSH(i));
val |= ADF_DH895XCC_ERRSSMSH_EN;
@@ -313,7 +313,7 @@ get_objs_num(struct adf_accel_dev *accel_dev)
return 1;
}
-static u32
+static u64
get_obj_cfg_ae_mask(struct adf_accel_dev *accel_dev,
enum adf_accel_unit_services services)
{
diff --git a/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c b/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
index a74de5eb592d..d66c2fc824f4 100644
--- a/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2025 Intel Corporation */
+/* Copyright(c) 2007-2026 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -131,7 +131,7 @@ adf_attach(device_t dev)
accel_pci_dev->sku = hw_data->get_sku(hw_data);
/* If the device has no acceleration engines then ignore it. */
if (!hw_data->accel_mask || !hw_data->ae_mask ||
- ((~hw_data->ae_mask) & 0x01)) {
+ ((~hw_data->ae_mask) & 0x01ULL)) {
device_printf(dev, "No acceleration units found\n");
ret = ENXIO;
goto out_err;