-
Notifications
You must be signed in to change notification settings - Fork 2
Guidelines of Virtualizing MMIO
This page briefly describes how to virtualize Memory-Mapped I/O for CVM guests.
To handle MMIO, you should clear any page permissions for the MMIO range so that any MMIOs can be intercepted as Memory-Access interceptions.
NoirVisor implements an internal emulator. You may specify the vCPU to use the internal emulator to decode the MMIO instruction.
If the internal emulator fails to emulate the MMIO instruction you want, you may either submit an issue to NoirVisor repository or disable the internal emulator and use your own emulator to decode memory-access instructions. NoirVisor provides the raw content of the fetched instruction. When you submit the issue, please provide the raw data of the MMIO instruction.
Any reads from or writes to the MMIO range will result in Memory-Access interceptions. User Hypervisors must emulate the instructions to obtain the contents of output or to fill in the contents of input.
The operand and instruction information is provided by NoirVisor's internal emulator. Check the exit context.
If the information is insufficient, submit an issue to NoirVisor repository.
As the User Hypervisor obtains all information, it should emulate the I/O operation properly.
If you think there is a problem with the library code, submit your feedback to the Issues section of this repository.
If you think there is a problem with the library documentation, submit your feedback to the Issues section of this repository
If you think there is a problem with the NoirVisor hypervisor, submit your feedback to the Issues section of NoirVisor repository
NoirCvmApi sidebar
- Home
- Functions
- NoirCreateVirtualMachine
- NoirCreateVirtualProcessor
- NoirDeleteVirtualMachine
- NoirDeleteVirtualProcessor
- NoirEditVirtualProcessorRegister
- NoirFinalizeLibrary
- NoirInitializeLibrary
- NoirRescindVirtualProcessor
- NoirRunVirtualProcessor
- NoirSetAddressMapping
- NoirSetEventInjection
- NoirSetVirtualProcessorOptions
- NoirViewVirtualProcessorRegister
- Structures