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
- Azkaban Executor Java Process CPU usage very high, The "top" command shows high sys usage
- virStorageFileBackendFileRead Failed to open file '/dev/...': Permission denied
- Hyper Threading: nosmt in grub configuration
- Passing Intel-PT to guest using QEMU/KVM doesn't work
- Get NT_STATUS_ACCESS_DENIED from smbClient / Samba despite Linux root
- How to start a KVM-QEMU VM once we connect to the VNC port by systemd sockets?
- QEMU execution traces for a simple program (guest mode)
- Getting dynamic execution traces for running a program in QEMU
- Enable KVM on GitHub Actions for private repository
- What is /dev/kvm device in kvm virtualization?
- Unable to disable rx-checksumming on virtual machine NIC
- Linux vhost kvm exit upon guest sending a packet
- How to create a persistent network using libvirt-java
- what happens when an external interrupt is received by the host in a virtual setting
- how does irqfd trigger interrupt in the guest
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.