STRUCT SYNPS_EDAC_PRIV(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct synps_edac_priv(9) ✨

okay bestie, so this is from the Kernel API Manual and it's literally the private instance data for the DDR memory controller β€” like, the main character energy of the Synopsys EDAC driver πŸ’…


🌸 NAME 🌸

struct synps_edac_priv β€” DDR memory controller private instance data. no cap, that's what it is 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

struct synps_edac_priv {
    void __iomem *baseaddr;
    spinlock_t reglock;
    char message[SYNPS_EDAC_MSG_SIZE];
    struct synps_ecc_status stat;
    const struct synps_platform_data *p_data;
    u32 ce_cnt;
    u32 ue_cnt;
  #ifdef CONFIG_EDAC_DEBUG;
    ulong poison_addr;
    u32 row_shift[18];
    u32 col_shift[14];
    u32 bank_shift[3];
    u32 bankgrp_shift[2];
    u32 rank_shift[1];
  #endif;
 };

πŸ’– Members πŸ’–

  • baseaddr β€” Base address of the DDR controller. like, where it all begins ✨
  • reglock β€” Concurrent CSRs access lock. keeping things from getting messy when everyone wants to touch the registers at once πŸ”’
  • message β€” Buffer for framing the event specific info. it's giving "receipts" for what went down πŸ’¬
  • stat β€” ECC status information. the vibes check on your memory errors πŸ“Š
  • p_data β€” Platform data. the platform-specific tea β˜•
  • ce_cnt β€” Correctable Error count. these are the oopsies that got fixed, nbd πŸ’β€β™€οΈ
  • ue_cnt β€” Uncorrectable Error count. the ones that did NOT get fixed and we're highkey stressed about 😭
  • poison_addr β€” Data poison address. yes bestie, poison β€” it's a debug thing, iykyk πŸ’€
  • row_shift β€” Bit shifts for row bit. shifting bits like we shift conversations πŸ”€
  • col_shift β€” Bit shifts for column bit. column energy ✨
  • bank_shift β€” Bit shifts for bank bit. bank bit says hi 🏦
  • bankgrp_shift β€” Bit shifts for bank group bit. bank group bit, not to be confused with regular bank bit, fr fr 🫢
  • rank_shift β€” Bit shifts for rank bit. rank bit is the final boss of bit shifts πŸ‘‘
note: the poison_addr, row_shift, col_shift, bank_shift, bankgrp_shift, and rank_shift members only exist when CONFIG_EDAC_DEBUG is defined! so don't come for them if they're not there πŸ™ˆ

🌈 SEE ALSO 🌈

Kernel file ./drivers/edac/synopsys_edac.c and also these iconic structs and functions, periodt:

struct ecc_error_info(9), struct synps_ecc_status(9), struct synps_platform_data(9), zynq_get_error_info(9), zynqmp_get_mem_info(9), zynqmp_get_error_info(9), handle_error(9), intr_handler(9), check_errors(9), zynq_get_dtype(9), zynqmp_get_dtype(9), get_memsize(9), zynq_get_mtype(9), zynqmp_get_mtype(9), init_csrows(9), mc_init(9), ddr_poison_setup(9), setup_address_map(9), mc_probe(9), mc_remove(9)


and that's the whole vibe bestie! this page came from ./drivers/edac and it's dated October 2026 β€” so like, it's lowkey from the future but also very demure, very mindful πŸŽ€βœ¨πŸ’œ

πŸ“¦ where this page comes from