[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 2017年04月17日 22:41, Konrad Rzeszutek Wilk wrote:
> 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/

Will do that.

> 
> 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=
>>  


-- 
Best regards
Tianyu Lan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.