drivers/crypto/intel/qat/qat_common/adf_gen6_ras.c
Source file repositories/reference/linux-study-clean/drivers/crypto/intel/qat/qat_common/adf_gen6_ras.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/crypto/intel/qat/qat_common/adf_gen6_ras.c- Extension
.c- Size
- 25519 bytes
- Lines
- 819
- 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
linux/bitfield.hlinux/types.hadf_common_drv.hadf_gen6_ras.hadf_sysfs_ras_counters.h
Detected Declarations
function enable_errsou_reportingfunction enable_ae_error_reportingfunction enable_cpp_error_reportingfunction enable_ti_ri_error_reportingfunction enable_ssm_error_reportingfunction adf_gen6_enable_rasfunction disable_errsou_reportingfunction disable_ae_error_reportingfunction disable_cpp_error_reportingfunction disable_ti_ri_error_reportingfunction disable_ssm_error_reportingfunction adf_gen6_disable_rasfunction adf_gen6_process_errsou0function adf_handle_cpp_ae_uncfunction adf_handle_cpp_cmd_par_errfunction 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_handle_ti_errfunction adf_handle_sfi_cmd_parerrfunction adf_gen6_process_errsou1function adf_handle_cerrssmshfunction adf_handle_uerrssmshfunction adf_handle_pperr_errfunction adf_handle_scmpar_errfunction adf_handle_cpppar_errfunction adf_handle_rfpar_errfunction adf_handle_unexp_cpl_errfunction adf_handle_iaintstatssmfunction adf_handle_ssmfunction adf_handle_cpp_cfc_errfunction adf_gen6_process_errsou2function adf_handle_timiscstsfunction adf_handle_ricppintstsfunction adf_handle_ticppintstsfunction adf_handle_atufaultstatusfunction adf_handle_rlterrorfunction adf_handle_vflrfunction adf_handle_tc_vc_map_errorfunction adf_handle_pcie_devhaltfunction adf_handle_pg_req_devhaltfunction adf_handle_xlt_cpl_devhaltfunction adf_handle_ti_int_err_devhaltfunction adf_gen6_process_errsou3
Annotated Snippet
if (atufaultstatus) {
dev_err(&GET_DEV(accel_dev), "Ring pair (%u) ATU detected fault: %#x\n", i,
atufaultstatus);
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_UNCORR);
ADF_CSR_WR(csr, ADF_GEN6_ATUFAULTSTATUS(i), atufaultstatus);
}
}
}
static void adf_handle_rlterror(struct adf_accel_dev *accel_dev, void __iomem *csr,
u32 errsou)
{
u32 rlterror;
if (!(errsou & ADF_GEN6_ERRSOU3_RLTERROR_BIT))
return;
rlterror = ADF_CSR_RD(csr, ADF_GEN6_RLT_ERRLOG);
rlterror &= ADF_GEN6_RLT_ERRLOG_MASK;
if (rlterror) {
dev_err(&GET_DEV(accel_dev), "Error in rate limiting block: %#x\n", rlterror);
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_UNCORR);
ADF_CSR_WR(csr, ADF_GEN6_RLT_ERRLOG, rlterror);
}
}
static void adf_handle_vflr(struct adf_accel_dev *accel_dev, void __iomem *csr, u32 errsou)
{
if (!(errsou & ADF_GEN6_ERRSOU3_VFLRNOTIFY_BIT))
return;
dev_err(&GET_DEV(accel_dev), "Uncorrectable error in VF\n");
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_UNCORR);
}
static void adf_handle_tc_vc_map_error(struct adf_accel_dev *accel_dev, void __iomem *csr,
u32 errsou)
{
if (!(errsou & ADF_GEN6_ERRSOU3_TC_VC_MAP_ERROR_BIT))
return;
dev_err(&GET_DEV(accel_dev), "Violation of PCIe TC VC mapping\n");
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_FATAL);
}
static void adf_handle_pcie_devhalt(struct adf_accel_dev *accel_dev, void __iomem *csr,
u32 errsou)
{
if (!(errsou & ADF_GEN6_ERRSOU3_PCIE_DEVHALT_BIT))
return;
dev_err(&GET_DEV(accel_dev),
"DEVHALT due to an error in an incoming transaction\n");
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_FATAL);
}
static void adf_handle_pg_req_devhalt(struct adf_accel_dev *accel_dev, void __iomem *csr,
u32 errsou)
{
if (!(errsou & ADF_GEN6_ERRSOU3_PG_REQ_DEVHALT_BIT))
return;
dev_err(&GET_DEV(accel_dev),
"Error due to response failure in response to a page request\n");
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_FATAL);
}
static void adf_handle_xlt_cpl_devhalt(struct adf_accel_dev *accel_dev, void __iomem *csr,
u32 errsou)
{
if (!(errsou & ADF_GEN6_ERRSOU3_XLT_CPL_DEVHALT_BIT))
return;
dev_err(&GET_DEV(accel_dev), "Error status for a address translation request\n");
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_FATAL);
}
static void adf_handle_ti_int_err_devhalt(struct adf_accel_dev *accel_dev, void __iomem *csr,
u32 errsou)
{
if (!(errsou & ADF_GEN6_ERRSOU3_TI_INT_ERR_DEVHALT_BIT))
return;
dev_err(&GET_DEV(accel_dev), "DEVHALT due to a TI internal memory error\n");
ADF_RAS_ERR_CTR_INC(accel_dev->ras_errors, ADF_RAS_FATAL);
}
static void adf_gen6_process_errsou3(struct adf_accel_dev *accel_dev, void __iomem *csr,
u32 errsou)
{
Annotation
- Immediate include surface: `linux/bitfield.h`, `linux/types.h`, `adf_common_drv.h`, `adf_gen6_ras.h`, `adf_sysfs_ras_counters.h`.
- Detected declarations: `function enable_errsou_reporting`, `function enable_ae_error_reporting`, `function enable_cpp_error_reporting`, `function enable_ti_ri_error_reporting`, `function enable_ssm_error_reporting`, `function adf_gen6_enable_ras`, `function disable_errsou_reporting`, `function disable_ae_error_reporting`, `function disable_cpp_error_reporting`, `function disable_ti_ri_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.