libnvme(9)

πŸ“¦ version 3.2, in arch rolling

πŸ¦‹ libnvme(9) β€” the API Manual, bestie edition πŸ¦‹

Okay so bestie, we're deep in the libnvme API manual today and honestly? This one's a little gem. ✨

πŸ’– NAME πŸ’–

enum nvme_mi_message_type β€” the NVMe-MI message type field. That's it, that's the whole vibe check. πŸ’…


🌸 SYNOPSIS 🌸

Here's the whole enum, laid out exactly like this, no cap:

enum nvme_mi_message_type {
    NVME_MI_MT_CONTROL ,
    NVME_MI_MT_MI ,
    NVME_MI_MT_ADMIN ,
    NVME_MI_MT_PCIE ,
    NVME_MI_MT_AE

};

Five constants, all iconic, all doing their own thing. 🫢


⭐ Constants ⭐

These are the actual values, and yes every single one matters β€” not me skipping a single one, we're doing this properly:

  • NVME_MI_MT_CONTROL β€” the NVME-MI Control Primitive. Very official. Very "I'm the one who knocks". πŸ‘‘
  • NVME_MI_MT_MI β€” an NVMe-MI command. It's giving main character energy, obviously. πŸ”₯
  • NVME_MI_MT_ADMIN β€” an NVMe Admin command. The responsible one of the group. πŸŽ€
  • NVME_MI_MT_PCIE β€” a PCIe command. Hardware girlies rise. πŸ¦‹
  • NVME_MI_MT_AE β€” an Asynchronous Event. It literally shows up whenever it wants, no warning, so rude, so slay. 😭

πŸ’œ Description πŸ’œ

So where does this thing actually live? It's used as byte 1 of both the request and response messages β€” that's the NMIMT bits of the NMP byte. Ngl kind of a specific spot but okay, we respect it. ⭐

🚨 Real talk though: do not confuse this with the MCTP message type in byte 0. Byte 0 is a whole different girlie. Keep them separate or you will be sad. πŸ’€

✨ Sign-off ✨

That's the page, bestie! This little beauty is dated October 2026, it's filed under enum nvme_mi_message_type, and it's part of libnvme(9). Go forth and encode your bytes correctly. πŸ’…πŸŒˆπŸ“

πŸ“¦ where this page comes from