Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

ioctl(vcpu_fd, KVM_RUN) asks the Linux Kernel-based Virtual Machine (KVM) to run the guest virtual CPU associated with that vCPU file descriptor. When the call returns successfully, the mapped struct kvm_run tells userspace why KVM returned and, when relevant, provides data needed to handle the event. The monitor handles that condition and calls KVM_RUN again to continue the guest.

What happens when userspace calls KVM_RUN?

KVM exposes virtual machines and their vCPUs through file descriptors and ioctls. A userspace virtual-machine monitor creates the VM and a vCPU, then uses the vCPU file descriptor to call KVM_RUN. The Linux Kernel Documentation describes it as an ioctl “used to run a guest virtual cpu.” Linux Kernel Documentation: KVM API

The call does not take an explicit ioctl argument. Instead, KVM and the monitor share a parameter-and-result area: struct kvm_run, mapped from the vCPU file descriptor at offset zero. The mapping size is obtained with KVM_GET_VCPU_MMAP_SIZE. The Linux UAPI header defines the structure used for this mapping. Linux UAPI header: kvm.h

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The basic control flow is a handoff:

  1. The monitor prepares any applicable input fields in the mapped struct kvm_run area.
  2. It calls ioctl(vcpu_fd, KVM_RUN), and KVM runs the guest vCPU.
  3. If KVM reports a condition requiring userspace participation, or another documented return condition occurs, the call returns.
  4. After a successful return, the monitor checks exit_reason and the corresponding exit data, then performs the required work.
  5. The monitor calls KVM_RUN again when it is ready to let the guest continue.

A “VM exit” is a transition out of guest execution, but it does not necessarily mean the KVM_RUN ioctl returns to userspace. KVM handles many events internally. The userspace loop sees the returns KVM exposes through this API.

#1 Best Overall
Hearvo USB 3.0 HDMI KVM Switch for 2 Computers 1 Monitor, 4K@60Hz, S7232H
  • 【KVM Switch 1 Monitors 2 Computers】This HDMI KVM Switch with two HDMI ports allows control of two computers, enabling them to share a single monitor along with keyboard and mouse. It's complete USB switch and HDMI switch rolled into one. This KVM Switch also supports various input devices such as PCs, Laptops, PS4, etc. It is compatible with various operating systems including Windows 7/8/10/11/Vista/XP, Linux, Mac, and more.
  • 【Four USB 3.0 Ports (3×USB-A + 1×USB-C)】 This KVM switch features 4 USB 3.0 ports with ultra-fast data transfer speeds up to 5Gbps, including 3 USB-A ports and 1 USB-C port for broader device compatibility. It allows you to seamlessly share peripherals between two computers, reducing cable clutter and improving workspace efficiency. Perfect for connecting and sharing USB devices such as keyboards, mice, scanners, printers, flash drives, headsets, and webcams. The switch automatically detects and recognizes connected devices for stable and reliable performance.
  • 【4K Resolution & HDCP 2.2】HDMI KVM Switch supports stunning 4K resolution at 60Hz, ensuring crystal-clear and highly detailed visuals for your monitors. Additionally, it is HDCP 2.2 compliant, allowing you to seamlessly view HDCP-protected content on your monitors without any interruptions. It also supports 4K@30Hz, 2K, 3D, and 1080P, offering flexibility for various display needs. This guarantees both exceptional image quality and a smooth, secure multimedia experience.
  • 【Two Ways of Switching】4K HDMI KVM Switch features two switching options: On-KVM Switch Button and Wired Remote Switch. The Wired Remote Switch allows you to place the HDMI KVM switch in hidden or distant location, keeping your desk tidy. Simply place the remote control within easy reach on your desk for quick access. With a press, you can switch between computers seamlessly, enhancing productivity and reducing clutter on your monitors.
  • 【Adaptive EDID & Plug and Play】This USB 3.0 HDMI KVM Switch features Adaptive EDID, ensuring stable and smooth image transmission by automatically optimizing display settings on your monitors. Easy to install, this HDMI KVM switch requires no power supply or driver software—just plug it in and connect all cables for seamless operation between two computers and one monitor.

How to read struct kvm_run

The mapped structure is both an input and output area. A monitor can set documented input fields before entering KVM. When KVM_RUN returns successfully with a return value of zero, exit_reason identifies why it returned; the structure’s union contains data for that reason. As the Linux Kernel Documentation puts it, a successful return “informs application code why KVM_RUN has returned.” Linux Kernel Documentation: KVM API

Do not confuse the ioctl’s return value with exit_reason. The return value answers whether the system call succeeded. exit_reason describes a successful KVM return. On an ioctl error, inspect errno rather than treating the contents of exit_reason as a device event.

Rank #2
Sale
UGREEN 8K@60Hz HDMI Displayport KVM Switch 3 Monitors 2 Computers, Aluminum
  • KVM Switch 3 Monitors 2 Computers: This 2*Displayport + 1*HDMI KVM Switches allows you to switch effortlessly between two computers with one click — share 3 monitors and 4 USB 3.0 ports (keyboard, mouse, printer, webcam) without swapping cables. Space-saving KVM for home offices, content creators, and IT professionals. NOTE: Both computers must support triple-monitor output to use all 3 displays simultaneously. If either PC only supports 1 or 2 displays, the extra monitor(s) won’t activate
  • Ultra HD 8K@60Hz/4K@240Hz Resolution: This USB KVM switch output features two DisplayPort 1.4 ports + one HDMI 2.1 port, each supporting up to 8K@60Hz resolution, and backward compatible with 8K@30Hz, 4K@240Hz/144Hz/120Hz/60Hz/30Hz. It also supports HDR10+, HDCP 2.3/1.4, VRR, FreeSync, and G-Sync, eliminating screen tearing and stuttering across three monitors, even at high frame rates. NOTE: If need to achieve 8K resolution, your computers and monitors both need to support 8K@60Hz resolution, and please make sure the length of your cables are within 2 meters 28AWG
  • Two Switching Ways & Two Dispaly Modes: This KVM switch displayport HDMI supports button switching and desktop controller switching, freely switch between 2 computers. With the desktop controller, you can place this monitor switch for 2 computers outside your work area, making your desktop cleaner and tidier. Two Dispaly Modes, Mirror mode: Triple monitors output the same images, Extend mode: Triple monitors output different images. NOTE: Not support Keyboard shortcuts (hotkeys) toggles
  • Wide Compatibility & Package List: This triple monitor KVM switch driver-free and plug and play, and supports Windows, and Linux systems. PACKAGE LIST: 1*KVM switch, 4*DP cables, 2*HDMI cables, 2*USB A cables, 1*power adapters, 1*desktop controller, 1*user guide
  • NOTE: 1, To ensure normal usage, please make sure to connect the power supply via the power adapter. 2, To display content across three screens simultaneously, make sure each of your PC is equipped with 2 DisplayPort ports + 1 HDMI port. 3, Each computer at the input needs to be connected with 2* DP cables + 1* HDMI cable+1* USB cable. 4, Please make sure your PC supports 3 screens or above display function before purchasing. 5, If a signal converter or docking station is used, there may be compatibility issues. 6, NOT support EDID emulation

Examples: port I/O and MMIO exits

These examples describe the userspace interface documented by KVM; port-I/O behavior is specifically associated with x86. Actual device handling depends on the virtual machine monitor and its device model.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Exit What triggered it What userspace gets or must do Effect of re-entering KVM_RUN
KVM_EXIT_IO On x86, the guest performed a port-I/O operation KVM could not satisfy. The structure reports the direction, access size, port, count, and an offset to packed data in the mapped region. For input, userspace supplies the data at the indicated location. For this listed exit, the operation is complete and guest state is consistent only after userspace re-enters the kernel with KVM_RUN.
KVM_EXIT_MMIO The guest performed a memory-mapped I/O operation KVM could not satisfy. The exit data includes the physical address, access length, direction, and data. Userspace supplies read data when the operation requires it. For this listed exit, the operation is complete and guest state is consistent only after userspace re-enters the kernel with KVM_RUN.

The KVM API reference recommends KVM_EXIT_IO on x86 or KVM_EXIT_MMIO on architectures other than s390 when guest functionality must interact with host userspace. It also says KVM_EXIT_IO is significantly faster than KVM_EXIT_MMIO, without giving a benchmark figure or test conditions. Treat this as the API’s guidance, not as a universal performance result for every device model. Linux Kernel Documentation: KVM API

Rank #3
HDMI KVM Switch 1 Monitor 2 Computers 4K@60HZ 2 Port KVM Switcher
  • 【USB 3.0 KVM Switch with 2 Switching Methods】This KVM Switch 2 Port HDMI can control 2 PCs to share 1 monitor with 1 set of USB 3.0 keyboard and mouse. You can quickly switch between 2 computers, and the KVM switch supports 2 switching methods: wired remote and button switching. Please Note: This product does not support hotkey switching.
  • 【KVM Switch HDMI with 3 USB 3.0 Ports】This HDMI KVM Switch comes with 3 USB 3.0 ports for sharing USB devices, such as keybaord, mouse, scanners, printers, U disks and more other USB devices, automatically recognize and match various display devices. This KVM Switches also supports a variety of input devices, such as PC, Laptop, PS4, etc. Compatible with a variety of computer systems like Windows 7/8/10/Vista/xp, Linux, Mac, and so on.
  • 【Support Ultra HD 4K Resolution】This KVM Switch 1 monitor 2 computer can support the resolution up to 3840*2160@60Hz, and can also be backward compatible with 3840*2160@30Hz, 1920*1080P@60Hz etc., which will bring you ultra-high-definition visual senses. The 4K KVM Switch can support a maximum refresh rate of 60Hz, please pay attention to the setting of this parameter when you use it.
  • 【Adaptive EDID & Plug and Play】This USB 3.0 HDMI KVM Switch can adaptive to EDID, which makes image transmission more stable and more smoothly. Support HDMI 2.0, HDCP2.2 standards. This KVM Switch 2 computers 1 monitor can be easily to install, just plug it in, no power and driver software required. When using this product, please connect all the cables.
  • 【After-sales Service】This KVM Switch 2 Port is equipped with USB 3.0 cables(1.2m)*2 , 3.5mm remote control cable (1m)*1, wired remote*1. You need to prepare the 3 HDMI cables required to connect 2 computers and 1 monitor. Our products provide lifetime warranty service. If you have any questions or concerns about our products, please contact us directly through the order number. We will provide you with a solution.

Why KVM_RUN returns

A successful return with a documented exit_reason is different from an interrupted or failed ioctl. The program should classify the syscall result first, then handle a successful KVM exit or follow its own interruption and error policy.

Outcome How to interpret it What to check
Return value 0 The ioctl succeeded. KVM’s userspace interface reports the reason in exit_reason. Read exit_reason and the matching union member, then perform the required handling.
Return value -1, with errno set to EINTR The call was interrupted, for example because an unmasked signal was pending. Apply the program’s signal and retry policy; do not interpret this as a successful device exit.
Return value -1, with another error The ioctl failed for another reason. Use errno and the applicable KVM API documentation to diagnose the failure.

The immediate_exit field is a separate way to request a prompt return. When the VM supports KVM_CAP_IMMEDIATE_EXIT, KVM checks this field as KVM_RUN starts; a nonzero value requests an immediate return with -EINTR. This is not the same mechanism as request_interrupt_window.

Rank #4
BENFEI USB 3.0 Switch, USB Switch 2 Computers Share 4 USB for PC, Mouse, Keyboard, Printer, Scanner, USB KVM Switch Selector Compatible with Windows, Mac, Linux
  • Share Multiple USB Devices between 2 Computer : The BENFEI 2 in 4 out USB 3.0 kvm switch supports 2 computers share 4 USB devices like keyboards, mouses, U disk, printers, scanners, USB cameras, headphones, etc. It's convenient for you to switch freely between your work computer and personal computer, driver free and compatible with multiple OS, such as windows 7/10/8/8.1/7/Vista/XP and Mac OS, Linux, and Chrome OS.
  • Transfer Files in Seconds: With the 4x USB 3.0 ports, BENFEI USB Switcher supports up to 5Gbps data transfer speed. You can easily transfer data from U disk, mobile hard disk to computer. It's backward compatible with USB 2.0, too.
  • Switch Easily: With the USB switcher button and LED indicator design, you can freely switch multiple USB devices between two computers with one click and clearly know the working status. Please note: When connected, it could work only when using the BENFEI USB A to USB A cable.
  • Multiple USB Devices Support: BENFEI USB Switch provides an extra USB C(5V 3A) power supply slot. If you use some high power consumption devices such as HDD, USB cameras, headphones, etc, please connect extra power for stable performance. (The USB A-USB Charging cable is included, but the power adapter is not)
  • 18 MONTH WARRANTY : Exclusive BENFEI Unconditional 18-month Warranty ensures long-time satisfaction of your purchase; Friendly and easy-to-reach customer service to solve your problems timely
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Interrupt-window requests and architecture-specific fields

A monitor can set request_interrupt_window to ask KVM to return when an external interrupt can be injected. If that request was made, ready_for_interrupt_injection reports whether injection is possible. This is distinct from setting immediate_exit, which asks for a prompt return rather than reporting readiness to inject an external interrupt.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Other fields, including if_flag, cr8, and apic_base, have constraints that depend in part on whether an in-kernel local APIC is used. The structure also includes architecture-specific flags and exit details. KVM_RUN exists across architectures, but that does not make every exit type, field, or behavior identical. Use the API documentation and UAPI headers for the target architecture and kernel release when implementing a monitor.

Best Value
GL.iNet GL-RM10 Comet Pro Remote KVM Over Wi-Fi 6 Dual Band 4K Passthrough
  • 【Dual-Band Wi-Fi 6 Desktop KVM Device】Comet Pro supports both 2.4 GHz and 5 GHz Wi-Fi bands for a cleaner setup with less cabling. By providing both wired and wireless connectivity, it eliminates single points of failure and redefines flexibility for remote access.
  • 【4K Video Passthrough & Two-Way Audio】The GL-RM10 features 4K@30FPS video passthrough and two-way audio, delivering ultra-clear, low-latency streams via H.264 encoding without interrupting the local display. Its audio support ensures crystal-clear voice interaction —ideal for remote meetings and IT support to create a natural "face-to-face" experience.
  • 【Touchscreen Interface】The 2.22-inch built-in touchscreen features an intuitive user interface that is easy to operate and requires no technical expertise, allowing you to effortlessly view and manage important functions—such as connecting to Wi-Fi networks and enabling or disabling cloud services.
  • 【Built-in Tailscale】 Enables secure, efficient data transfer between devices using WireGuard's encrypted transmission and direct connection features. Ideal for home labs, offices, and multiple networking scenarios.
  • 【Flexible Remote Access】Remote access can be achieved through our web based cloud control functionality, supporting Windows, macOS, and Linux systems without needing to install any software. Additionally, there is remote support via the GLKVM app available to Windows, macOS, iOS and Android devices.

How userspace resumes the guest safely

For KVM_EXIT_IO, KVM_EXIT_MMIO, and several other userspace-mediated exits, handling the data in userspace is not by itself the end of the operation. The API says the operation is complete and guest state consistent only after userspace re-enters the kernel with KVM_RUN. Pending-operation state is not preserved in state visible to userspace. A monitor should therefore complete its handling and re-enter KVM as required, rather than treating the operation as already complete while deferring resumption indefinitely. Linux Kernel Documentation: KVM API

In pseudocode, the distinction looks like this:

for (;;) {
    int result = ioctl(vcpu_fd, KVM_RUN);

    if (result == -1) {
        /* Inspect errno and apply signal/error policy. */
        continue;
    }

    switch (run->exit_reason) {
    case KVM_EXIT_IO:
        /* Handle the port-I/O data described by run. */
        break;
    case KVM_EXIT_MMIO:
        /* Handle the MMIO data described by run. */
        break;
    default:
        /* Handle other documented exit reasons. */
        break;
    }

    /* Re-enter KVM_RUN when the exit handling is complete. */
}

This sketch illustrates the ordering, not a complete monitor: a real implementation must handle each exit reason it supports and decide how its signal and error policy affects retries or shutdown.

Which documentation to use

The Linux kernel KVM API reference is maintained and can change. Its cited version was checked on October 7, 2026; the Linux mainline UAPI header’s master branch is mutable as well. For software targeting a specific deployment, check the documentation and headers for that kernel release and architecture. KVM API reference · Linux UAPI header

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.