STRUCT SYNPS_EDAC_PRIV(9)
β¨ 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: thepoison_addr,row_shift,col_shift,bank_shift,bankgrp_shift, andrank_shiftmembers only exist whenCONFIG_EDAC_DEBUGis 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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms