[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH 00/23] xen/vIOMMU: Add vIOMMU support with irq remapping fucntion on Intel platform
On Mon, Mar 20, 2017 at 02:23:02PM +0000, Roger Pau Monné wrote: > On Fri, Mar 17, 2017 at 07:27:00PM +0800, Lan Tianyu wrote: > > This patchset is to introduce vIOMMU framework and add virtual VTD's > > interrupt remapping support according "Xen virtual IOMMU high level > > design doc > > V3"(https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.xenproject.org_archives_html_xen-2Ddevel_&d=DwIGaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=wAkdPB9j1dAH7AI494B5wFV3Jws7EfB2Q3Sw-K-88Rk&m=7dZfaODS8zbwpYC0vm7gKQXyM8pBPxfGpz8QMDQzU2k&s=3hxzmHH4X0gz9Oz5_PYoOmWFTkyETYTFPCqJ9iXD910&e= > > > > 2016-11/msg01391.html). It would be awesome if that was as a patch in docs/misc/ Thanks. > > > > - vIOMMU framework > > New framework provides viommu_ops and help functions to abstract > > vIOMMU operations(E,G create, destroy, handle irq remapping request > > and so on). Vendors(Intel, ARM, AMD and son) can implement their > > vIOMMU callbacks. > > > > - Xen vIOMMU device model in Qemu > > It's in charge of create/destroy vIOMMU in hypervisor via new vIOMMU > > DMOP hypercalls. It will be required to pass virtual devices DMA > > request to hypervisor when enable IOVA(DMA request without PASID) > > function. > > > > - Virtual VTD > > In this patchset, we enable irq remapping function and covers both > > MSI and IOAPIC interrupts. Don't support post interrupt mode emulation > > and post interrupt mode enabled on host with virtual VTD. Will add > > later. > > > > Chao Gao (19): > > Tools/libxc: Add viommu operations in libxc > > Tools/libacpi: Add DMA remapping reporting (DMAR) ACPI table > > structures > > Tools/libacpi: Add new fields in acpi_config to build DMAR table > > Tools/libacpi: Add a user configurable parameter to control vIOMMU > > attributes > > Tools/libxl: Inform device model to create a guest with a vIOMMU > > device > > x86/hvm: Introduce a emulated VTD for HVM > > X86/vvtd: Add MMIO handler for VVTD > > X86/vvtd: Set Interrupt Remapping Table Pointer through GCMD > > X86/vvtd: Process interrupt remapping request > > X86/vvtd: decode interrupt attribute from IRTE > > X86/vioapic: Hook interrupt delivery of vIOAPIC > > X86/vvtd: Enable Queued Invalidation through GCMD > > X86/vvtd: Enable Interrupt Remapping through GCMD > > x86/vpt: Get interrupt vector through a vioapic interface > > passthrough: move some fields of hvm_gmsi_info to a sub-structure > > Tools/libxc: Add a new interface to bind msi-ir with pirq > > X86/vmsi: Hook guest MSI injection > > X86/vvtd: Handle interrupt translation faults > > X86/vvtd: Add queued invalidation (QI) support > > > > Lan Tianyu (4): > > VIOMMU: Add vIOMMU helper functions to create, destroy and query > > capabilities > > DMOP: Introduce new DMOP commands for vIOMMU support > > VIOMMU: Add irq request callback to deal with irq remapping > > VIOMMU: Add get irq info callback to convert irq remapping request > > > > tools/libacpi/acpi2_0.h | 45 + > > tools/libacpi/build.c | 58 ++ > > tools/libacpi/libacpi.h | 12 + > > tools/libs/devicemodel/core.c | 69 ++ > > tools/libs/devicemodel/include/xendevicemodel.h | 35 + > > tools/libs/devicemodel/libxendevicemodel.map | 3 + > > tools/libxc/include/xenctrl.h | 17 + > > tools/libxc/include/xenctrl_compat.h | 5 + > > tools/libxc/xc_devicemodel_compat.c | 18 + > > tools/libxc/xc_domain.c | 55 + > > tools/libxl/libxl_create.c | 12 +- > > tools/libxl/libxl_dm.c | 9 + > > tools/libxl/libxl_dom.c | 85 ++ > > tools/libxl/libxl_types.idl | 8 + > > tools/xl/xl_parse.c | 54 + > > xen/arch/x86/Makefile | 1 + > > xen/arch/x86/hvm/Makefile | 1 + > > xen/arch/x86/hvm/dm.c | 29 + > > xen/arch/x86/hvm/irq.c | 10 + > > xen/arch/x86/hvm/vioapic.c | 36 + > > xen/arch/x86/hvm/vmsi.c | 17 +- > > xen/arch/x86/hvm/vpt.c | 2 +- > > xen/arch/x86/hvm/vvtd.c | 1229 > > +++++++++++++++++++++++ > > xen/arch/x86/viommu.c | 40 + > > xen/common/Makefile | 1 + > > xen/common/domain.c | 3 + > > xen/common/viommu.c | 119 +++ > > xen/drivers/passthrough/io.c | 183 +++- > > xen/drivers/passthrough/vtd/iommu.h | 213 +++- > > xen/include/asm-arm/viommu.h | 38 + > > xen/include/asm-x86/hvm/vioapic.h | 1 + > > xen/include/asm-x86/msi.h | 3 + > > xen/include/asm-x86/viommu.h | 68 ++ > > xen/include/public/arch-x86/hvm/save.h | 19 + > > xen/include/public/domctl.h | 7 + > > xen/include/public/hvm/dm_op.h | 39 + > > xen/include/public/viommu.h | 38 + > > xen/include/xen/hvm/irq.h | 20 +- > > xen/include/xen/sched.h | 2 + > > xen/include/xen/viommu.h | 74 ++ > > 40 files changed, 2601 insertions(+), 77 deletions(-) > > create mode 100644 xen/arch/x86/hvm/vvtd.c > > create mode 100644 xen/arch/x86/viommu.c > > create mode 100644 xen/common/viommu.c > > create mode 100644 xen/include/asm-arm/viommu.h > > create mode 100644 xen/include/asm-x86/viommu.h > > create mode 100644 xen/include/public/viommu.h > > create mode 100644 xen/include/xen/viommu.h > > Thanks! So you add all this vIOMMU code, but the maximum number of allowed > vCPUs for HVM guests is still limited to 128 (HVM_MAX_VCPUS is not touched). > Is > there any missing pieces in order to bump this? > > Also, have you tested if this series works with PVH guests? Boris added PVH > support to Linux not long ago, so you should be able to test it just by > picking > the latest Linux kernel. > > Roger. > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.xen.org_xen-2Ddevel&d=DwIGaQ&c=RoP1YumCXCgaWHvlZYR8PQcxBKCX5YTpkKY057SbK10&r=wAkdPB9j1dAH7AI494B5wFV3Jws7EfB2Q3Sw-K-88Rk&m=7dZfaODS8zbwpYC0vm7gKQXyM8pBPxfGpz8QMDQzU2k&s=RinrlfGer5iCrg48EvpWXwDjHMkLhdtKjdhnsNhzUIo&e= > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |