NE_EVTCNT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NE_EVTCNT(9) β€” the Kernel API Manual, but make it make sense

okay so bestie, welcome to the manual page for NE_EVTCNT β€” it's a 4-byte register living in the Nitro Enclaves kernel API, and honestly? it's iconic. it's the little messenger that tells the driver "hey, something's ready for you." no cap.


✨ NAME ✨

NE_EVTCNT β€” a 4-byte register that exists purely to notify the driver that a reply or a device event is available. it's Read-Only, so don't even think about writing to it, bestie 🫢

and listen β€” it's split into two halves, which is the cute part:

  • Lower half β€” command reply counter
  • Higher half β€” out-of-band device event counter

two counters, one register, main character energy fr fr πŸ‘‘


🌸 SYNOPSIS 🌸

NE_EVTCNT

that's it. that's the whole synopsis. she's lowkey minimal πŸ’…


πŸ¦‹ SEE ALSO πŸ¦‹

okay this is the part where the manpage goes absolutely feral with cross-references, and i respect it. here's literally every single one, no skipping, periodt:

  • Kernel file ./drivers/virt/nitro_enclaves/ne_pci_dev.h β€” the header file itself, the source of truth, the blueprint 🌈
  • Nitro Enclaves (NE) PCI device(9) β€” the parent device section, the whole vibe
  • PCI_DEVICE_ID_NE(9) β€” the device ID identifying an NE PCI device
  • PCI_BAR_NE(9) β€” the NE PCI BAR
  • Device registers in the NE PCI device MMIO BAR(9) β€” all the registers, this one included
  • NE_ENABLE(9) β€” the enable register
  • NE_VERSION(9) β€” the version register
  • NE_COMMAND(9) β€” the command register
  • NE_SEND_DATA(9) β€” sending data
  • NE_RECV_DATA(9) β€” receiving data
  • Device MMIO buffer sizes(9) β€” the buffer sizes in the MMIO space
  • NE_SEND_DATA_SIZE(9) β€” size of the send data buffer
  • NE_RECV_DATA_SIZE(9) β€” size of the recv data buffer
  • MSI-X interrupt vectors(9) β€” the MSI-X vectors, the interrupt squad
  • NE_VEC_REPLY(9) β€” the reply interrupt vector
  • NE_VEC_EVENT(9) β€” the event interrupt vector
  • enum ne_pci_dev_cmd_type(9) β€” the enum of device command types
  • Device commands - payload structure for requests and replies.(9) β€” the payload structure story for requests and replies
  • struct enclave_start_req(9) β€” struct for starting an enclave
  • struct enclave_get_slot_req(9) β€” struct for getting a slot
  • struct enclave_stop_req(9) β€” struct for stopping an enclave
  • struct slot_alloc_req(9) β€” struct for allocating a slot
  • struct slot_free_req(9) β€” struct for freeing a slot
  • struct slot_add_mem_req(9) β€” struct for adding memory to a slot
  • struct slot_add_vcpu_req(9) β€” struct for adding a vCPU to a slot
  • struct slot_count_req(9) β€” struct for getting the slot count
  • struct next_slot_req(9) β€” struct for getting the next slot
  • struct slot_info_req(9) β€” struct for slot info
  • struct slot_add_bulk_vcpus_req(9) β€” struct for adding vCPUs in bulk
  • struct ne_pci_dev_cmd_reply(9) β€” struct for the command reply
  • struct ne_pci_dev(9) β€” struct for the NE PCI device itself
  • ne_do_request(9) β€” the function that actually does the request πŸŽ€

like… it's giving "linked list of documentation." obsessed πŸ’–


ngl bestie, remember NE_EVTCNT is Read-Only β€” that's not a suggestion, that's the whole spec 😭

and that's the page!! this gem ships from ./drivers/virt/nitro_enclaves, dated October 2026, and it's literally part of the Kernel API Manual. go read ne_pci_dev.h if you wanna see the source of all this drama 🧚✨ bye bestie, slay your kernel work πŸ’œ

πŸ“¦ where this page comes from