STRUCT EDAC_RAW_ERROR_DESC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct edac_raw_error_desc(9) πŸ’–

okay so real talk β€” this is a page straight outta the Kernel API Manual, and it's about struct edac_raw_error_desc, aka the raw error report structure. that's the little bundle of info the kernel uses to describe a memory error before it gets all dressed up and reported πŸ’… bestie, it's giving "receipt for a bad time" and honestly? iconic.


✨ SYNOPSIS ✨

like, here's the whole shape of it, no cap:

struct edac_raw_error_desc {
    char location[LOCATION_SIZE];
    char label[(EDAC_MC_LABEL_LEN + 1 + sizeof(OTHER_LABEL)) *
EDAC_MAX_LABELS];
    long grain;
    u16 error_count;
    enum hw_event_mc_err_type type;
    int top_layer;
    int mid_layer;
    int low_layer;
    unsigned long page_frame_number;
    unsigned long offset_in_page;
    unsigned long syndrome;
    const char *msg;
    const char *other_detail;
 };

not me staring at that label array size like 😭 β€” it's literally (EDAC_MC_LABEL_LEN + 1 + sizeof(OTHER_LABEL)) * EDAC_MAX_LABELS, and yes, the wrapping is exactly what the kernel hands you. respect it 🫢


🌸 MEMBERS 🌸

okay now the main character content β€” every single field, explained with love:

  • location β€” where the error happened, literally the location of the error πŸ“
  • label β€” the label of the affected DIMM(s). yes, DIMM*s*, plural, she can hold a whole squad πŸ’–
  • grain β€” the minimum granularity for an error report, in bytes. small but mighty ✨
  • error_count β€” how many errors of the same type showed up. it's a u16, keep that in mind πŸ”₯
  • type β€” the severity of the error (CE/UE/Fatal). vibe check on the damage level πŸ’€
  • top_layer β€” the top layer of the error (layer[0]) πŸ‘‘
  • mid_layer β€” the middle layer of the error (layer[1]) πŸŽ€
  • low_layer β€” the low layer of the error (layer[2]) 🌸
  • page_frame_number β€” the page where the error happened. the scene of the crime, fr fr πŸ“„
  • offset_in_page β€” the page offset. micro-location tea πŸ¦‹
  • syndrome β€” the syndrome of the error, or 0 if it's unknown or if the syndrome is not applicable. zero means "idk or n/a", not "all good" β€” don't get it twisted πŸ™ˆ
  • msg β€” the error message. the announcement, the moment 🌈
  • other_detail β€” other driver-specific detail about the error. the extra lore, iykyk πŸ’œ

πŸ‘€ SEE ALSO πŸ‘€

go read these next, bestie, they're all in the kernel file ./include/linux/edac.h:

  • enum dev_type(9)
  • enum hw_event_mc_err_type(9)
  • enum mem_type(9)
  • enum edac_type(9)
  • enum scrub_type(9)
  • enum edac_mc_layer_type(9)
  • struct edac_mc_layer(9)
  • struct rank_info(9)
  • edac_get_dimm(9)
  • struct edac_scrub_ops(9)
  • struct edac_ecs_ops(9)
  • struct edac_mem_repair_ops(9)

lowkey a whole study session right there β€” read them in order and you'll eat, no notes πŸ’…

and that's the whole page, periodt πŸŽ€ this came from the ./include/linux section of the Kernel API Manual, dated October 2026 β€” mwah, tysm for reading, bestie πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from