amdxdna_error.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (C) 2025, Advanced Micro Devices, Inc.
  4. */
  5. #ifndef _AMDXDNA_ERROR_H_
  6. #define _AMDXDNA_ERROR_H_
  7. #include <linux/bitfield.h>
  8. #include <linux/bits.h>
  9. #define AMDXDNA_ERR_DRV_AIE 4
  10. #define AMDXDNA_ERR_SEV_CRITICAL 3
  11. #define AMDXDNA_ERR_CLASS_AIE 2
  12. #define AMDXDNA_ERR_NUM_MASK GENMASK_U64(15, 0)
  13. #define AMDXDNA_ERR_DRV_MASK GENMASK_U64(23, 16)
  14. #define AMDXDNA_ERR_SEV_MASK GENMASK_U64(31, 24)
  15. #define AMDXDNA_ERR_MOD_MASK GENMASK_U64(39, 32)
  16. #define AMDXDNA_ERR_CLASS_MASK GENMASK_U64(47, 40)
  17. enum amdxdna_error_num {
  18. AMDXDNA_ERROR_NUM_AIE_SATURATION = 3,
  19. AMDXDNA_ERROR_NUM_AIE_FP,
  20. AMDXDNA_ERROR_NUM_AIE_STREAM,
  21. AMDXDNA_ERROR_NUM_AIE_ACCESS,
  22. AMDXDNA_ERROR_NUM_AIE_BUS,
  23. AMDXDNA_ERROR_NUM_AIE_INSTRUCTION,
  24. AMDXDNA_ERROR_NUM_AIE_ECC,
  25. AMDXDNA_ERROR_NUM_AIE_LOCK,
  26. AMDXDNA_ERROR_NUM_AIE_DMA,
  27. AMDXDNA_ERROR_NUM_AIE_MEM_PARITY,
  28. AMDXDNA_ERROR_NUM_UNKNOWN = 15,
  29. };
  30. enum amdxdna_error_module {
  31. AMDXDNA_ERROR_MODULE_AIE_CORE = 3,
  32. AMDXDNA_ERROR_MODULE_AIE_MEMORY,
  33. AMDXDNA_ERROR_MODULE_AIE_SHIM,
  34. AMDXDNA_ERROR_MODULE_AIE_NOC,
  35. AMDXDNA_ERROR_MODULE_AIE_PL,
  36. AMDXDNA_ERROR_MODULE_UNKNOWN = 8,
  37. };
  38. #define AMDXDNA_ERROR_ENCODE(err_num, err_mod) \
  39. (FIELD_PREP(AMDXDNA_ERR_NUM_MASK, err_num) | \
  40. FIELD_PREP_CONST(AMDXDNA_ERR_DRV_MASK, AMDXDNA_ERR_DRV_AIE) | \
  41. FIELD_PREP_CONST(AMDXDNA_ERR_SEV_MASK, AMDXDNA_ERR_SEV_CRITICAL) | \
  42. FIELD_PREP(AMDXDNA_ERR_MOD_MASK, err_mod) | \
  43. FIELD_PREP_CONST(AMDXDNA_ERR_CLASS_MASK, AMDXDNA_ERR_CLASS_AIE))
  44. #define AMDXDNA_EXTRA_ERR_COL_MASK GENMASK_U64(7, 0)
  45. #define AMDXDNA_EXTRA_ERR_ROW_MASK GENMASK_U64(15, 8)
  46. #define AMDXDNA_EXTRA_ERR_ENCODE(row, col) \
  47. (FIELD_PREP(AMDXDNA_EXTRA_ERR_COL_MASK, col) | \
  48. FIELD_PREP(AMDXDNA_EXTRA_ERR_ROW_MASK, row))
  49. #endif /* _AMDXDNA_ERROR_H_ */