VMD(4)
π 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 to1.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 to1.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 to3.
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
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- nixpkgs unstable: source
- π the page's license: BSD-2-Clause
- Copyright (c) 2021 Alexander Motin <mav@FreeBSD.org>
- Copyright 2019 Cisco Systems, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms