drivers/crypto/intel/qat/qat_common/adf_gen4_ras.c
Source file repositories/reference/linux-study-clean/drivers/crypto/intel/qat/qat_common/adf_gen4_ras.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/crypto/intel/qat/qat_common/adf_gen4_ras.c- Extension
.c- Size
- 43076 bytes
- Lines
- 1518
- Domain
- Driver Families
- Bucket
- drivers/crypto
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
adf_common_drv.hadf_gen4_hw_data.hadf_gen4_ras.hadf_sysfs_ras_counters.h
Detected Declarations
function enable_errsou_reportingfunction disable_errsou_reportingfunction enable_ae_error_reportingfunction disable_ae_error_reportingfunction enable_cpp_error_reportingfunction disable_cpp_error_reportingfunction enable_ti_ri_error_reportingfunction disable_ti_ri_error_reportingfunction enable_rf_error_reportingfunction disable_rf_error_reportingfunction enable_ssm_error_reportingfunction disable_ssm_error_reportingfunction enable_aram_error_reportingfunction disable_aram_error_reportingfunction adf_gen4_enable_rasfunction adf_gen4_disable_rasfunction adf_gen4_process_errsou0function adf_handle_cpp_aeuncfunction adf_handle_cppcmdparerrfunction adf_handle_ri_mem_par_errfunction adf_handle_ti_ci_par_stsfunction adf_handle_ti_pullfub_par_stsfunction adf_handle_ti_pushfub_par_stsfunction adf_handle_ti_cd_par_stsfunction adf_handle_ti_trnsb_par_stsfunction adf_handle_iosfp_cmd_parerrfunction adf_gen4_process_errsou1function adf_handle_uerrssmshfunction adf_handle_cerrssmshfunction adf_handle_pperr_errfunction adf_poll_slicehang_csrfunction adf_handle_slice_hang_errorfunction adf_handle_spp_pullcmd_errfunction adf_handle_spp_pulldata_errfunction adf_handle_spp_pushcmd_errfunction adf_handle_spp_pushdata_errfunction adf_handle_spppar_errfunction adf_handle_ssmcpppar_errfunction for_each_set_bitfunction for_each_set_bitfunction adf_handle_rf_parr_errfunction adf_handle_ser_err_ssmshfunction for_each_set_bitfunction for_each_set_bitfunction for_each_set_bitfunction adf_handle_iaintstatssmfunction adf_handle_exprpssmcmprfunction adf_handle_exprpssmxlt
Annotated Snippet
if (reg) {
dev_err(&GET_DEV(accel_dev),
"SPP pull command fatal error WAT_WCP: 0x%x\n", reg);
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_FATAL);
ADF_CSR_WR(csr, ADF_GEN4_SPPPULLCMDPARERR_WAT_WCP, reg);
reset_required = true;
}
}
return reset_required;
}
static bool adf_handle_spp_pulldata_err(struct adf_accel_dev *accel_dev,
void __iomem *csr)
{
struct adf_dev_err_mask *err_mask = GET_ERR_MASK(accel_dev);
u32 reg;
reg = ADF_CSR_RD(csr, ADF_GEN4_SPPPULLDATAPARERR_ATH_CPH);
reg &= err_mask->parerr_ath_cph_mask;
if (reg) {
dev_err(&GET_DEV(accel_dev),
"SPP pull data err ATH_CPH: 0x%x\n", reg);
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_UNCORR);
ADF_CSR_WR(csr, ADF_GEN4_SPPPULLDATAPARERR_ATH_CPH, reg);
}
reg = ADF_CSR_RD(csr, ADF_GEN4_SPPPULLDATAPARERR_CPR_XLT);
reg &= err_mask->parerr_cpr_xlt_mask;
if (reg) {
dev_err(&GET_DEV(accel_dev),
"SPP pull data err CPR_XLT: 0x%x\n", reg);
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_UNCORR);
ADF_CSR_WR(csr, ADF_GEN4_SPPPULLDATAPARERR_CPR_XLT, reg);
}
reg = ADF_CSR_RD(csr, ADF_GEN4_SPPPULLDATAPARERR_DCPR_UCS);
reg &= err_mask->parerr_dcpr_ucs_mask;
if (reg) {
dev_err(&GET_DEV(accel_dev),
"SPP pull data err DCPR_UCS: 0x%x\n", reg);
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_UNCORR);
ADF_CSR_WR(csr, ADF_GEN4_SPPPULLDATAPARERR_DCPR_UCS, reg);
}
reg = ADF_CSR_RD(csr, ADF_GEN4_SPPPULLDATAPARERR_PKE);
reg &= err_mask->parerr_pke_mask;
if (reg) {
dev_err(&GET_DEV(accel_dev),
"SPP pull data err PKE: 0x%x\n", reg);
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_UNCORR);
ADF_CSR_WR(csr, ADF_GEN4_SPPPULLDATAPARERR_PKE, reg);
}
if (err_mask->parerr_wat_wcp_mask) {
reg = ADF_CSR_RD(csr, ADF_GEN4_SPPPULLDATAPARERR_WAT_WCP);
reg &= err_mask->parerr_wat_wcp_mask;
if (reg) {
dev_err(&GET_DEV(accel_dev),
"SPP pull data err WAT_WCP: 0x%x\n", reg);
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_UNCORR);
ADF_CSR_WR(csr, ADF_GEN4_SPPPULLDATAPARERR_WAT_WCP, reg);
}
}
return false;
}
static bool adf_handle_spp_pushcmd_err(struct adf_accel_dev *accel_dev,
void __iomem *csr)
{
struct adf_dev_err_mask *err_mask = GET_ERR_MASK(accel_dev);
bool reset_required = false;
u32 reg;
reg = ADF_CSR_RD(csr, ADF_GEN4_SPPPUSHCMDPARERR_ATH_CPH);
reg &= err_mask->parerr_ath_cph_mask;
Annotation
- Immediate include surface: `adf_common_drv.h`, `adf_gen4_hw_data.h`, `adf_gen4_ras.h`, `adf_sysfs_ras_counters.h`.
- Detected declarations: `function enable_errsou_reporting`, `function disable_errsou_reporting`, `function enable_ae_error_reporting`, `function disable_ae_error_reporting`, `function enable_cpp_error_reporting`, `function disable_cpp_error_reporting`, `function enable_ti_ri_error_reporting`, `function disable_ti_ri_error_reporting`, `function enable_rf_error_reporting`, `function disable_rf_error_reporting`.
- Atlas domain: Driver Families / drivers/crypto.
- Implementation status: integration implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.