VMD(4)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1, nixpkgs unstable

πŸ’… VMD(4) β€” Kernel Interfaces Manual, but make it a group chat 🫢

okay so bestie, this is the page for vmd, straight out of the Kernel Interfaces Manual (section 4, drivers, you know the vibe) and I'm gonna walk you through it like we're texting at 2am. no cap, it's actually so good.


✨ NAME ✨

vmd β€” the Intel Volume Management Device driver. that's it, that's the name, iconic behavior honestly πŸ’…


🌸 SYNOPSIS 🌸

so like, you got two ways to get this driver living in your kernel. pick your fighter:

option 1: compile it in. drop these lines into your kernel configuration file:

device vmd

option 2: load it as a module at boot time instead. put this line in loader.conf(5):

vmd_load="YES"

literally that simple πŸŽ€


πŸ¦‹ DESCRIPTION πŸ¦‹

so the way this works: this driver attaches to Intel VMD devices and represents them as PCI-to-PCI bridges, giving you access to the children PCI devices via new PCI domains. very main character, very "I contain multitudes" energy.

and for context, Intel VMD is what Intel's VROC (Virtual RAID on chip) uses to manage NVMe drives. iykyk πŸ”₯


🧚 LOADER TUNABLES 🧚

these tunables are settable via loader(8) or sysctl(8). let's go through them one by one, bestie:

  • hw.vmd.bypass_msi β€” by default, all VMD devices remap children MSI/MSI-X interrupts into their own. it creates additional isolation (slay for security) but also complicates things due to sharing, etc. (😭 the tradeoff). fortunately, some VMD devices can bypass the remapping. defaults to 1.
  • hw.vmd.max_msi β€” limits the number of Message Signaled Interrupt (MSI) vectors allowed to each child device. VMD can't distinguish MSI vectors of the same device, so there are literally zero benefits to having more than one, unless it is required by a specific device driver. defaults to 1.
  • hw.vmd.max_msix β€” limits the number of Extended Message Signaled Interrupt (MSI-X) vectors allowed to each child device. VMD has a limited number of interrupt vectors to map children interrupts into, so to avoid/reduce sharing, children devices/drivers need to be constrained. defaults to 3.
no improvising on these defaults unless you know exactly what you're doing, bestie πŸ’€

🌈 SEE ALSO 🌈

  • graid(8) β€” go read that one too, it's giving sibling energy 🫢

πŸ‘‘ HISTORY πŸ‘‘

the vmd driver first appeared in FreeBSD 13.0. she's new here and she's already serving πŸ’œ


okay that's the whole page, you're so welcome πŸ“βœ¨

sign-off szn: this beauty comes to you from Debian, dated October 6, 2022. mwah πŸ’‹ bye bestie!!

πŸ“¦ where this page comes from