[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC PATCH 5/23] Tools/libxc: Add viommu operations in libxc



On Fri, Mar 17, 2017 at 07:27:05PM +0800, Lan Tianyu wrote:
> From: Chao Gao <chao.gao@xxxxxxxxx>
> 
> In previous patch, we introduce a common vIOMMU layer. In our design,
> we create/destroy vIOMMU through DMOP interface instead of creating it
> according to a config flag of domain. It makes it is possible
> to create vIOMMU in device model or in tool stack.
> 
> The following toolstack code is to add XEN_DMOP_viommu_XXX syscalls:

Hypercalls, not syscalls.

>  - query capabilities of vIOMMU emulated by Xen
>  - create vIOMMU in Xen hypervisor with base address, capability
>  - destroy vIOMMU specified by viommu_id
> 
> Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx>
> Signed-off-by: Lan Tianyu <tianyu.lan@xxxxxxxxx>
> ---
>  tools/libs/devicemodel/core.c                   | 69 
> +++++++++++++++++++++++++
>  tools/libs/devicemodel/include/xendevicemodel.h | 35 +++++++++++++
>  tools/libs/devicemodel/libxendevicemodel.map    |  3 ++
>  tools/libxc/include/xenctrl_compat.h            |  5 ++
>  tools/libxc/xc_devicemodel_compat.c             | 18 +++++++
>  5 files changed, 130 insertions(+)
> 
> diff --git a/tools/libs/devicemodel/core.c b/tools/libs/devicemodel/core.c
> index a85cb49..aee1150 100644
> --- a/tools/libs/devicemodel/core.c
> +++ b/tools/libs/devicemodel/core.c

Bear in mind that this library is stable, so whatever ends up here can
change in the future.

This is not saying the following code is problematic. It is just a
general FYI.

Obviously the toolstack side is going to follow the hypervisor
interface, so I will do a detailed review later.

> +int xendevicemodel_viommu_destroy(
> +    xendevicemodel_handle *dmod, domid_t dom, uint32_t viommu_id);
>  #endif /* __XEN_TOOLS__ */
>  
>  #endif /* XENDEVICEMODEL_H */
> diff --git a/tools/libs/devicemodel/libxendevicemodel.map 
> b/tools/libs/devicemodel/libxendevicemodel.map
> index 45c773e..c2e0968 100644
> --- a/tools/libs/devicemodel/libxendevicemodel.map
> +++ b/tools/libs/devicemodel/libxendevicemodel.map
> @@ -17,6 +17,9 @@ VERS_1.0 {
>               xendevicemodel_modified_memory;
>               xendevicemodel_set_mem_type;
>               xendevicemodel_inject_event;
> +             xendevicemodel_viommu_query_cap;
> +             xendevicemodel_viommu_create;
> +             xendevicemodel_viommu_destroy;
>               xendevicemodel_restrict;
>               xendevicemodel_close;

I suppose this series is going to miss 4.9.

Please add these functions to VERS_1.1.

>       local: *; /* Do not expose anything by default */
> diff --git a/tools/libxc/include/xenctrl_compat.h 
> b/tools/libxc/include/xenctrl_compat.h
> index 040e7b2..315c45d 100644
> --- a/tools/libxc/include/xenctrl_compat.h
> +++ b/tools/libxc/include/xenctrl_compat.h
> @@ -164,6 +164,11 @@ int xc_hvm_set_mem_type(
>  int xc_hvm_inject_trap(
>      xc_interface *xch, domid_t domid, int vcpu, uint8_t vector,
>      uint8_t type, uint32_t error_code, uint8_t insn_len, uint64_t cr2);
> +int xc_viommu_query_cap(xc_interface *xch, domid_t dom, uint64_t *cap);
> +int xc_viommu_create(
> +    xc_interface *xch, domid_t dom, uint64_t base_addr, uint64_t cap,
> +    uint32_t *viommu_id);
> +int xc_viommu_destroy(xc_interface *xch, domid_t dom, uint32_t viommu_id);
>  
>  #endif /* XC_WANT_COMPAT_DEVICEMODEL_API */
>  
> diff --git a/tools/libxc/xc_devicemodel_compat.c 
> b/tools/libxc/xc_devicemodel_compat.c
> index e4edeea..62f703a 100644
> --- a/tools/libxc/xc_devicemodel_compat.c
> +++ b/tools/libxc/xc_devicemodel_compat.c

I don't think you need to provide compat wrappers for them. They are new
APIs.

Wei.

_______________________________________________
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®.