UNION LBC_INT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… union lbc_int(9) πŸ’…

okay bestie, we're in the Kernel API Manual today and the star of the show is union lbc_int β€” the LBC interrupt summary register. it's a union, it's a struct, it's giving "one value, two personalities," and honestly? iconic. πŸŽ€


πŸ“› NAME πŸ“›

union lbc_int β€” LBC interrupt summary register

like literally that's the whole name. no notes. πŸ’–


✨ SYNOPSIS ✨

so here's the vibe. you got a u64 value for when you wanna look at the whole thing at once, and then s, a struct full of one-bit flags for when you wanna be nosy about individual bits. oh and the bit order flips depending on endianness, because of course it does 😭

union lbc_int {
    u64 value;
    struct {
  #if (defined(__BIG_ENDIAN_BITFIELD));
      u64 raz_10_63 : 54;
      u64 cam_hard_err : 1;
      u64 cam_inval_abort : 1;
      u64 over_fetch_err : 1;
      u64 cache_line_to_err : 1;
      u64 sbe : 1;
      u64 dbe : 1;
      u64 pref_dat_len_mismatch_err : 1;
      u64 rd_dat_len_mismatch_err : 1;
      u64 cam_soft_err : 1;
      u64 dma_rd_err : 1;
  #else;
      u64 dma_rd_err : 1;
      u64 cam_soft_err : 1;
      u64 rd_dat_len_mismatch_err : 1;
      u64 pref_dat_len_mismatch_err : 1;
      u64 dbe : 1;
      u64 sbe : 1;
      u64 cache_line_to_err : 1;
      u64 over_fetch_err : 1;
      u64 cam_inval_abort : 1;
      u64 cam_hard_err : 1;
      u64 raz_10_63 : 54;
  #endif;
    } s;
 };

quick tour, no cap:

  • u64 value β€” the whole 64-bit register in one go. main character energy. πŸ‘‘
  • s β€” the struct that lets you poke at the bits one by one.
  • raz_10_63 β€” 54 bits wide. it's the big one. the rest are all : 1 girlies.
  • the one-bit flags are: cam_hard_err, cam_inval_abort, over_fetch_err, cache_line_to_err, sbe, dbe, pref_dat_len_mismatch_err, rd_dat_len_mismatch_err, cam_soft_err, dma_rd_err β€” all : 1, all present, all accounted for. 🫢
  • under #if (defined(__BIG_ENDIAN_BITFIELD)); the bits run from raz_10_63 down to dma_rd_err; under the #else; branch they're declared in exactly the reverse order, dma_rd_err first and raz_10_63 last. same bits, flipped reading order, iykyk. πŸ”₯
and yes, those #if/#else/#endif lines really do have trailing semicolons in this file. we don't ask questions, we just copy it exactly. πŸ’€

🧚 Members 🧚

this section exists, it's right there in the page, and it lists... nothing. empty. a whole heading with zero content. the audacity. 😭 the members you actually care about are all chilling up there in the struct β€” go look at the bits, babe. πŸ¦‹


πŸ”— SEE ALSO πŸ”—

Kernel file ./drivers/crypto/cavium/nitrox/nitrox_csr.h, plus this whole friend group of unions:

  • 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(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_inval_status(9)
  • union rst_boot(9)
  • union fus_dat1(9)

okay that's the whole page, bestie, you ate that. πŸ“ this little beauty lives in ./drivers/crypto/cavium/nitrox and the page is dated October 2026 β€” slay, see you in the future. βœ¨πŸ’œ

πŸ“¦ where this page comes from