STRUCT ACRN_VM(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’œ struct_acrn_vm(9) โ€” like, the whole vibe of an ACRN User VM

okay so bestie, welcome to the Kernel API Manual โœจ this is the page for struct acrn_vm, which is literally the receipt for what makes an ACRN User VM a User VM. every field, every lock, every list โ€” it's all here, no cap. ๐Ÿซถ


๐ŸŒธ NAME ๐ŸŒธ

struct acrn_vm โ€” Properties of ACRN User VM. that's it, that's the whole name section, she's short and she knows it ๐Ÿ’…


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

here's the actual struct, copied character for character because we do NOT play with code in this house:

struct acrn_vm {
    struct list_head                list;
    u16 vmid;
    int vcpu_num;
    unsigned long                   flags;
    struct mutex                    regions_mapping_lock;
    struct vm_memory_mapping
regions_mapping[ACRN_MEM_MAPPING_MAX];
    int regions_mapping_count;
    spinlock_t ioreq_clients_lock;
    struct list_head                ioreq_clients;
    struct acrn_ioreq_client        *default_client;
    struct acrn_io_request_buffer   *ioreq_buf;
    struct page                     *ioreq_page;
    u32 pci_conf_addr;
    struct page                     *monitor_page;
    struct mutex                    ioeventfds_lock;
    struct list_head                ioeventfds;
    struct acrn_ioreq_client        *ioeventfd_client;
    struct mutex                    irqfds_lock;
    struct list_head                irqfds;
    struct workqueue_struct         *irqfd_wq;
 };

(and yes, that one member decl is split across two lines in the original and we are keeping it, okay, respect the source ๐ŸŽ€)


๐Ÿ‘‘ Members ๐Ÿ‘‘

this is the main character energy section. every single field, in order, no skips:

  • list โ€” her entry within the global list of all VMs. she's on the list, she's iconic, she's tracked. ๐Ÿ“‹
  • vmid โ€” User VM ID. the name tag at the party. ๐Ÿ’–
  • vcpu_num โ€” number of virtual CPUs in the VM. how many lil workers she's got. ๐Ÿ”ฅ
  • flags โ€” flags (ACRN_VM_FLAG_*) of the VM. important lore: this is VM flag management in HSM, and it's different from the acrn_vm_creation.vm_flag. do not confuse them, bestie, they are not the same thing, fr fr. ๐Ÿ™ˆ
  • regions_mapping_lock โ€” the lock protecting acrn_vm.regions_mapping and acrn_vm.regions_mapping_count. bodyguard behavior. ๐Ÿ›ก๏ธ (ok there's no shield emoji in the allowed list but the vibe stands)
  • regions_mapping โ€” memory mappings of this VM. the map of her territory ๐ŸŒˆ
  • regions_mapping_count โ€” number of memory mappings of this VM. literally just the count, keeping the map honest ๐Ÿงฎ
  • ioreq_clients_lock โ€” lock to protect ioreq_clients and default_client. another bodyguard, different ward ๐Ÿ’…
  • ioreq_clients โ€” the I/O request clients list of this VM. the group chat of I/O clients, lowkey ๐Ÿซถ
  • default_client โ€” the default I/O request client. when nobody else gets picked, she does ๐ŸŒŸ
  • ioreq_buf โ€” I/O request shared buffer. the shared snack table, everyone's welcome ๐Ÿ“
  • ioreq_page โ€” the page of the I/O request shared buffer. the physical page that holds the above ๐Ÿ’œ
  • pci_conf_addr โ€” address of a PCI configuration access emulation. (the original says "Address of a PCI configuration access emulation" and we are saying it exactly, no edits ๐Ÿ˜ญ)
  • monitor_page โ€” page of interrupt statistics of User VM. stats page, she's the analytics dashboard ๐Ÿ“Š
  • ioeventfds_lock โ€” lock to protect the ioeventfds list. ๐Ÿ”’
  • ioeventfds โ€” list to link all hsm_ioeventfd. all of them. linked. chain gang โ›“๏ธ (cute chain gang though)
  • ioeventfd_client โ€” I/O client for ioeventfds of the VM. she handles the ioeventfds business specifically โœจ
  • irqfds_lock โ€” lock to protect the irqfds list. yes, another lock, we have so many locks, it's giving secure ๐Ÿ˜Œ
  • irqfds โ€” list to link all hsm_irqfd. same energy, different list ๐Ÿ’ซ
  • irqfd_wq โ€” workqueue for irqfd async shutdown. the cleanup crew, doing it asynchronously, slay ๐ŸŒ™

๐Ÿ” SEE ALSO ๐Ÿ”

go read these too, iykyk, they're all connected:

  • Kernel file ./drivers/virt/acrn/acrn_drv.h
  • struct vm_memory_region_op(9)
  • struct vm_memory_region_batch(9)
  • struct vm_memory_mapping(9)
  • struct acrn_ioreq_buffer(9)
  • struct acrn_ioreq_client(9)

that's the page bestie, you ate it up ๐Ÿ’…โœจ a big sparkly thank you to ./drivers/virt/acrn for the source, dated October 2026, and this manual page will forever be known as struct acrn_vm(9) ๐ŸŽ€๐Ÿฆ‹๐Ÿ’–

๐Ÿ“ฆ where this page comes from