UNION RST_BOOT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… union rst_boot(9) β€” RST Boot Register πŸŽ€

okay bestie, so we're deep in the Kernel API Manual today and this one is a union called union rst_boot, and it's literally the RST Boot Register. it's giving "hardware register dressed up as C" and honestly? iconic. let's get into it πŸ¦‹


✨ SYNOPSIS ✨

like, here's the whole shape of her. do not retype this by hand, just vibe with it:

union rst_boot {
    u64 value;
    struct {
  #if (defined(__BIG_ENDIAN_BITFIELD));
      u64 raz_63 : 1;
      u64 jtcsrdis : 1;
      u64 raz_59_61 : 3;
      u64 jt_tst_mode : 1;
      u64 raz_40_57 : 18;
      u64 io_supply : 3;
      u64 raz_30_36 : 7;
      u64 pnr_mul : 6;
      u64 raz_12_23 : 12;
      u64 lboot : 10;
      u64 rboot : 1;
      u64 rboot_pin : 1;
  #else;
      u64 rboot_pin : 1;
      u64 rboot : 1;
      u64 lboot : 10;
      u64 raz_12_23 : 12;
      u64 pnr_mul : 6;
      u64 raz_30_36 : 7;
      u64 io_supply : 3;
      u64 raz_40_57 : 18;
      u64 jt_tst_mode : 1;
      u64 raz_59_61 : 3;
      u64 jtcsrdis : 1;
      u64 raz_63 : 1;
  #endif;
    };
 };

see how she flips the whole bitfield order depending on __BIG_ENDIAN_BITFIELD? that's not a bug, that's a lifestyle. πŸ’…


🌸 Members 🌸

okay so these are the bitfields, and yes the list shows up twice in the original (once per endianness ordering, bestie, it's symmetric like that 🫢). keeping every single one, no cap:

  • {unnamed_struct} β€” anonymous. she has no name, only vibes. main character energy honestly.
  • jtcsrdis β€” when set, internal CSR access via JTAG TAP controller is disabled. so like, set her and that door is closed, periodt.
  • jt_tst_mode β€” JTAG test mode. πŸ”₯
  • io_supply β€” I/O power supply setting based on IO_VDD_SELECT pin: 0x1 = 1.8V, 0x2 = 2.5V, 0x4 = 3.3V. All other values are reserved. so like, pick from the menu, the rest are literally not on the menu πŸ™ˆ
  • pnr_mul β€” clock multiplier. go faster bestie ⭐
  • lboot β€” last boot cause mask, resets only with PLL_DC_OK. so she remembers, and she only clears up when PLL_DC_OK says so.
  • rboot β€” determines whether core 0 remains in reset after chip cold or warm or soft reset. core 0 either wakes up or stays napping 😴
  • rboot_pin β€” read only access to REMOTE_BOOT pin. look but don't touch, iykyk.
  • rboot_pin β€” read only access to REMOTE_BOOT pin.
  • rboot β€” determines whether core 0 remains in reset after chip cold or warm or soft reset.
  • lboot β€” last boot cause mask, resets only with PLL_DC_OK.
  • pnr_mul β€” clock multiplier.
  • io_supply β€” I/O power supply setting based on IO_VDD_SELECT pin: 0x1 = 1.8V, 0x2 = 2.5V, 0x4 = 3.3V. All other values are reserved.
  • jt_tst_mode β€” JTAG test mode.
  • jtcsrdis β€” when set, internal CSR access via JTAG TAP controller is disabled.
πŸ’€ yes bestie, the members really do appear twice in the source page. that's the big-endian/little-endian mirror thing. we are not deleting them, we respect the bitfield order in both directions. ✨

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./drivers/crypto/cavium/nitrox/nitrox_csr.h, plus this whole friend group of unions β€” say hi πŸ‘‹:

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_int(9), union lbc_inval_status(9), union fus_dat1(9)


and that's the whole page, bestie 🫢 this one came out of ./drivers/crypto/cavium/nitrox, dated October 2026, and it's union rst_boot(9) all day long. go forth and boot responsibly β­πŸ’œ

πŸ“¦ where this page comes from