{"title":"通过VFIO给arm上的kvm虚拟机分配平台设备","authors":"Antonios Motakis, A. Rigo, D. Raho","doi":"10.1109/EUC.2014.32","DOIUrl":null,"url":null,"abstract":"VFIO (Virtual Function I/O) is a Linux kernel infrastructure that allows to leverage the capabilities of modern IOMMUs to drive a device directly from user space without any additional specialized kernel driver being involved. When used by QEMU/KVM, a device can be assigned to a guest VM, allowing to transparently handle all aspects of communication with the device, including DMA mapping, MMIO range mapping, and interrupts. To support a given hardware architecture and device, VFIO will need to be able to support the type of IOMMU that is in front of the device, and the discovery and configuration mechanisms of the bus that the device is connected to. However, often no auto configuration interface is exposed on ARM, as opposed to devices on a PCI bus, commonly used on x86. In order to support VFIO on ARM, in this work platform devices support is being implemented as a VFIO_PLATFORM driver. Additionally, VFIO is being extended to support common IOMMUs found on ARM systems, such as the ARM SMMU. In this paper, we highlight the challenges met while implementing the required components, and extensions to VFIO and KVM in order to fully support device assignment to Virtual Machines on modern ARM systems.","PeriodicalId":331736,"journal":{"name":"2014 12th IEEE International Conference on Embedded and Ubiquitous Computing","volume":"30 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2014-08-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"5","resultStr":"{\"title\":\"Platform Device Assignment to KVM-on-ARM Virtual Machines via VFIO\",\"authors\":\"Antonios Motakis, A. Rigo, D. Raho\",\"doi\":\"10.1109/EUC.2014.32\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"VFIO (Virtual Function I/O) is a Linux kernel infrastructure that allows to leverage the capabilities of modern IOMMUs to drive a device directly from user space without any additional specialized kernel driver being involved. When used by QEMU/KVM, a device can be assigned to a guest VM, allowing to transparently handle all aspects of communication with the device, including DMA mapping, MMIO range mapping, and interrupts. To support a given hardware architecture and device, VFIO will need to be able to support the type of IOMMU that is in front of the device, and the discovery and configuration mechanisms of the bus that the device is connected to. However, often no auto configuration interface is exposed on ARM, as opposed to devices on a PCI bus, commonly used on x86. In order to support VFIO on ARM, in this work platform devices support is being implemented as a VFIO_PLATFORM driver. Additionally, VFIO is being extended to support common IOMMUs found on ARM systems, such as the ARM SMMU. In this paper, we highlight the challenges met while implementing the required components, and extensions to VFIO and KVM in order to fully support device assignment to Virtual Machines on modern ARM systems.\",\"PeriodicalId\":331736,\"journal\":{\"name\":\"2014 12th IEEE International Conference on Embedded and Ubiquitous Computing\",\"volume\":\"30 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2014-08-26\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"5\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2014 12th IEEE International Conference on Embedded and Ubiquitous Computing\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/EUC.2014.32\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2014 12th IEEE International Conference on Embedded and Ubiquitous Computing","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/EUC.2014.32","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Platform Device Assignment to KVM-on-ARM Virtual Machines via VFIO
VFIO (Virtual Function I/O) is a Linux kernel infrastructure that allows to leverage the capabilities of modern IOMMUs to drive a device directly from user space without any additional specialized kernel driver being involved. When used by QEMU/KVM, a device can be assigned to a guest VM, allowing to transparently handle all aspects of communication with the device, including DMA mapping, MMIO range mapping, and interrupts. To support a given hardware architecture and device, VFIO will need to be able to support the type of IOMMU that is in front of the device, and the discovery and configuration mechanisms of the bus that the device is connected to. However, often no auto configuration interface is exposed on ARM, as opposed to devices on a PCI bus, commonly used on x86. In order to support VFIO on ARM, in this work platform devices support is being implemented as a VFIO_PLATFORM driver. Additionally, VFIO is being extended to support common IOMMUs found on ARM systems, such as the ARM SMMU. In this paper, we highlight the challenges met while implementing the required components, and extensions to VFIO and KVM in order to fully support device assignment to Virtual Machines on modern ARM systems.