Error Detection And Correction (EDAC)

Error Detection And Correction is a mechanism used to detect and correct errors while storing or reading data.

Configuration option

Related configuration option:

API Reference

group edac

Optional interfaces

EDAC Optional Interfaces

static inline int edac_inject_set_param1(const struct device *dev, uint64_t value)

Set injection parameter param1.

Set first error injection parameter value.

Parameters:
  • dev – Pointer to the device structure

  • value – First injection parameter

Return values:
  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, other error code otherwise

static inline int edac_inject_get_param1(const struct device *dev, uint64_t *value)

Get injection parameter param1.

Get first error injection parameter value.

Parameters:
  • dev – Pointer to the device structure

  • value – Pointer to the first injection parameter

Return values:
  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_set_param2(const struct device *dev, uint64_t value)

Set injection parameter param2.

Set second error injection parameter value.

Parameters:
  • dev – Pointer to the device structure

  • value – Second injection parameter

Return values:
  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_get_param2(const struct device *dev, uint64_t *value)

Get injection parameter param2.

Parameters:
  • dev – Pointer to the device structure

  • value – Pointer to the second injection parameter

Return values:
  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_set_error_type(const struct device *dev, uint32_t error_type)

Set error type value.

Set the value of error type to be injected

Parameters:
  • dev – Pointer to the device structure

  • error_type – Error type value

Return values:
  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_get_error_type(const struct device *dev, uint32_t *error_type)

Get error type value.

Get the value of error type to be injected

Parameters:
  • dev – Pointer to the device structure

  • error_type – Pointer to error type value

Return values:
  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_error_trigger(const struct device *dev)

Set injection control.

Trigger error injection.

Parameters:
  • dev – Pointer to the device structure

Return values:
  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

Mandatory interfaces

EDAC Mandatory Interfaces

static inline int edac_ecc_error_log_get(const struct device *dev, uint64_t *value)

Get ECC Error Log.

Read value of ECC Error Log.

Parameters:
  • dev – Pointer to the device structure

  • value – Pointer to the ECC Error Log value

Return values:
  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_ecc_error_log_clear(const struct device *dev)

Clear ECC Error Log.

Clear value of ECC Error Log.

Parameters:
  • dev – Pointer to the device structure

Return values:
  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_parity_error_log_get(const struct device *dev, uint64_t *value)

Get Parity Error Log.

Read value of Parity Error Log.

Parameters:
  • dev – Pointer to the device structure

  • value – Pointer to the parity Error Log value

Return values:
  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_parity_error_log_clear(const struct device *dev)

Clear Parity Error Log.

Clear value of Parity Error Log.

Parameters:
  • dev – Pointer to the device structure

Return values:
  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_errors_cor_get(const struct device *dev)

Get number of correctable errors.

Parameters:
  • dev – Pointer to the device structure

Return values:
  • num – Number of correctable errors

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_errors_uc_get(const struct device *dev)

Get number of uncorrectable errors.

Parameters:
  • dev – Pointer to the device structure

Return values:
  • num – Number of uncorrectable errors

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_notify_callback_set(const struct device *dev, edac_notify_callback_f cb)

Register callback function for memory error exception.

This callback runs in interrupt context

Parameters:
  • dev – EDAC driver device to install callback

  • cb – Callback function pointer

Return values:
  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

Enums

enum edac_error_type

EDAC error type.

Values:

enumerator EDAC_ERROR_TYPE_DRAM_COR = BIT(0)

Correctable error type.

enumerator EDAC_ERROR_TYPE_DRAM_UC = BIT(1)

Uncorrectable error type.