UNION EFL_CORE_INT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ‘‘ union efl_core_int(9) πŸ‘‘

okay so this is a page from the Kernel API Manual, and the star of the show is union efl_core_int β€” the EFL Interrupt Registers. yes bestie we're in driver-land, crypto division, and it's giving "I read the datasheet so you don't have to" energy. let's go πŸ’…


🌸 NAME 🌸

union efl_core_int β€” EFL Interrupt Registers, periodt. that's the whole vibe. ✨


✨ SYNOPSIS ✨

okay don't panic, it's just a union with a plain u64 and a struct of bitfields layered on top. look:

union efl_core_int {
    u64 value;
    struct {
  #if (defined(__BIG_ENDIAN_BITFIELD));
      u64 raz : 57;
      u64 epci_decode_err : 1;
      u64 ae_err : 1;
      u64 se_err : 1;
      u64 dbe : 1;
      u64 sbe : 1;
      u64 d_left : 1;
      u64 len_ovr : 1;
  #else;
      u64 len_ovr : 1;
      u64 d_left : 1;
      u64 sbe : 1;
      u64 dbe : 1;
      u64 se_err : 1;
      u64 ae_err : 1;
      u64 epci_decode_err  : 1;
      u64 raz : 57;
  #endif;
    } s;
 };

the way that #if (defined(__BIG_ENDIAN_BITFIELD)); flips the whole order is so real β€” big endian goes raz first, little endian goes len_ovr first and raz chills at the end. either way the bits add up to 64, no cap. and yes you clocked it: in the #else branch epci_decode_err : 1; has two whole spaces before the colon β€” that's verbatim from the source, bestie, we do not touch. πŸ™ˆ

also raz : 57 is literally 57 bits of it. iconic. πŸ”₯


🫢 Members 🫢

so value is the raw u64, and s is the struct that lets you peek at the individual bits β€” len_ovr, d_left, sbe, dbe, se_err, ae_err, epci_decode_err, and that big ol' raz : 57.

that's it. that's the section. she's minimal, she's mysterious, she ate. πŸ’€


🌈 SEE ALSO 🌈

the whole friend group is here and they're all unions β€” go say hi πŸ¦‹:

Kernel file ./drivers/crypto/cavium/nitrox/nitrox_csr.h, union ucd_core_eid_ucode_block_num(9), union aqm_grp_execmsk_lo(9), union aqm_grp_execmsk_hi(9), union aqmq_drbl(9), union aqmq_qsz(9), union aqmq_cmp_thr(9), union aqmq_cmp_cnt(9), union aqmq_en(9), union aqmq_activity_stat(9), union emu_fuse_map(9), union emu_se_enable(9), union emu_ae_enable(9), union emu_wd_int_ena_w1s(9), union emu_ge_int_ena_w1s(9), union nps_pkt_slc_ctl(9), union nps_pkt_slc_cnts(9), union nps_pkt_slc_int_levels(9), union nps_pkt_in_done_cnts(9), union nps_pkt_in_instr_ctl(9), union nps_pkt_in_instr_rsize(9), union nps_pkt_in_instr_baoff_dbell(9), union nps_core_int_ena_w1s(9), union nps_core_gbl_vfcfg(9), union nps_core_int_active(9), union efl_core_int_ena_w1s(9), union efl_rnm_ctl_status(9), union bmi_ctl(9), union bmi_int_ena_w1s(9), union bmo_ctl2(9), union pom_int_ena_w1s(9), union lbc_inval_ctl(9), union lbc_int_ena_w1s(9), union lbc_int(9), union lbc_inval_status(9), union rst_boot(9), union fus_dat1(9)


okay that's the whole page, you're officially a nitrox girly now πŸ’œ this masterpiece lives over in ./drivers/crypto/cavium/nitrox, and the version/date stamp at the bottom of the page says October 2026 β€” so she's from the future, main character energy fr fr. mwah, go read your registers πŸŽ€πŸ’–β­

πŸ“¦ where this page comes from