I'm trying to understand what happens in a virtualization setting when the host receives an external interrupt. For example if CPU-1 is being utilized by vCPU-0 of a VM and there is an external interrupt, can that host ISR run on CPU-1 or does it prevent all host interrupts from running on CPU's assigned to the VM ? If it can, then does it result in a VMExit and if so how does one go from host ISR running to VMExit ? This question addresses part of it but does not discuss the path I'm mention above, it assumes a VMExit happens but I'm looking for the sequence of steps that lead to it.
what happens when an external interrupt is received by the host in a virtual setting
49 Views Asked by user3882729 At
1
There are 1 best solutions below
Related Questions in LINUX-KERNEL
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Facing fatal errors while running "yum update" command on CentOS 7/Cloudlinux 7
- crash utility itself crashes while decoding kdump generated from null pointer dereference in kernel module
- How to compile the Linux kernel with -O0 for more detailed debug?
- Linux support for parallel Pixel data Image sensor
- Can't upgrade to newest version of linux-image-6.5.0-26-generic
- How to protect a page so that it cannot be write in mips arch?
- How to extract the .img file into normal kernel source file in the linux?
- Storage size of struct hash_desc desc; isn't known
- How can I intercept failed file openning calls?
- struct nameidata-Linux Kernel Module
- How to modify a 'struct msghdr' in Linux Kernel Module?
- How to allocate 500MB+ physically contiguous memory in a Linux kernel module and copy data to that memory from a userspace process?
- Hyper Threading: nosmt in grub configuration
Related Questions in QEMU
- How to call a C language function from x86 assembly code?
- How can i get the vector register information in RVV0.7.1 when debugging with QEMU6.2?
- What's the difference between the '-' and '.' in the decode of RISCV instructions in QEMU?
- QEMU i386 pmio addresses
- How to reduce the size of the Android Studio virtual device folder
- Why is there a difference in memory writes when my qemu runs directly and when debugging the img with GDB?
- General Protection Fault encountered when executing SYSRET
- Property '.readonly' not found
- How to set breakpoints in Visual Studio Code for debugging kernel code running in QEMU?
- virt-manager printing to from windows 7 guest to Ubuntu host network printer
- How to connect internet within a qemu(linux based) running on a linux based host machine with company proxy server
- How does one debug the KVM subsystem?
- Android emulator memory exceeds the limit when using the swiftshader_indirect gpu
- Passing Intel-PT to guest using QEMU/KVM doesn't work
- QEMU emulator for Radxa Rock 5B
Related Questions in VIRTUALIZATION
- How to Create a Data Table Visualization in Kibana with Nested Aggregation Fields?
- Calcite and Avatica to expose a data warehouse as a virtual database
- Passing Intel-PT to guest using QEMU/KVM doesn't work
- AWS EC2 export-image Task Fails with Error "Unsupported architecture 183 for 6.2.0-1017-aws"
- Docker - Bridge docker container to eth interface on host network container
- what happens when an external interrupt is received by the host in a virtual setting
- how does irqfd trigger interrupt in the guest
- How to monitor vcpu registers with kvm_sync_regs in kvm_run?
- How to run xorg in docker with custom edid?
- GenyMotion virtual devices do not have internet
- problem in libvirt service with g_hash_table_unref?
- x86_64 android emulator on mac arm
- why this error occurs in opensuse as a host, that has 2 hypervisor on it?
- podman start stuck on "Waiting for VM..."
- How to Creating a Data Disk Image from an External Image File in Huawei Cloud Stack?
Related Questions in KVM
- Reading contents of a qcow2 image using `bdrv_pread(..)` or alternatives
- Network Block Device - Receive control failed (result -32) - Kernel 3.16.0-41
- How to automate application installation in virtual machine?
- KVM and Libvirt: Bad CPU/Network performance of guest
- how to trace guest OS when qemu is run with kvm enabled and cpu is host?
- Nvidia GPU passthrough fail with code 43
- ubuntu guest on RHEL kvm *(x86_64) is failing
- libvirt-php receives the error: internal error Unable to locate libvirtd daemon in /usr/sbin
- Linux gitian-builder and "dpkg: error processing package sudo"
- Exception when run Aspnet Mvc app on OS X
- libvirt-php receives the error: unable to connect to server Permission denied
- Running qemu on ARM with KVM acceleration
- How to configure a new host and virtual machine on opennebula?
- how virtio front-end drivers to share vring (or virtqueue) with qemu?
- How to package vm for KVM/QEMU?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The CPU that the interrupt is delivered to is controlled by the interrupt remapping table in the IOMMU and/or the MSI programmed in the device.
When the interrupt is delivered to the CPU core, it generally causes a VM exit. The VM exit is caused by the interrupt itself, before any interrupt handler is called.
It is up to the VM exit handler to decide how to handle the interrupt and whether a host ISR should be called.
The VT-d feature called posted interrupts allows an interrupt to be delivered directly to the currently running VCPU without a VM exit, as described in the answer to the question you linked.