[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] xen-pt: bind/unbind interrupt remapping format MSI
On Thu, Jun 29, 2017 at 01:49:53AM -0400, Lan Tianyu wrote: > From: Chao Gao <chao.gao@xxxxxxxxx> > > If a vIOMMU is exposed to guest, guest will configure the msi to remapping > format. The original code isn't suitable to the new format. A new pair > bind/unbind interfaces are added for this usage. This patch recognizes > this case and uses new interfaces to bind/unbind msi. > > Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx> > Signed-off-by: Lan Tianyu <tianyu.lan@xxxxxxxxx> Hi, The patch series is going to need to be rebased on top of QEMU upstream. For starter, configure have changed a bit. > --- > configure | 54 > +++++++++++++++++++++++++++++++++++++++++++ > hw/xen/xen_pt_msi.c | 50 ++++++++++++++++++++++++++++----------- > include/hw/i386/apic-msidef.h | 1 + > include/hw/xen/xen_common.h | 25 ++++++++++++++++++++ > 4 files changed, 117 insertions(+), 13 deletions(-) > > diff --git a/configure b/configure > index 476210b..b3ac49f 100755 > --- a/configure > +++ b/configure > @@ -1982,6 +1982,60 @@ EOF > /* > * If we have stable libs the we don't want the libxc compat > * layers, regardless of what CFLAGS we may have been given. > + */ > +#undef XC_WANT_COMPAT_EVTCHN_API > +#undef XC_WANT_COMPAT_GNTTAB_API > +#undef XC_WANT_COMPAT_MAP_FOREIGN_API > +#include <xenctrl.h> > +#include <xenstore.h> > +#include <xenevtchn.h> > +#include <xengnttab.h> > +#include <xenforeignmemory.h> > +#include <stdint.h> > +#include <xen/hvm/hvm_info_table.h> > +#if !defined(HVM_MAX_VCPUS) > +# error HVM_MAX_VCPUS not defined > +#endif > +int main(void) { > + xc_interface *xc = NULL; > + xenforeignmemory_handle *xfmem; > + xenevtchn_handle *xe; > + xengnttab_handle *xg; > + xen_domain_handle_t handle; > + xengnttab_grant_copy_segment_t* seg = NULL; > + > + xs_daemon_open(); > + > + xc = xc_interface_open(0, 0, 0); > + xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); > + xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); > + xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); > + xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); > + xc_domain_create(xc, 0, handle, 0, NULL, NULL); > + > + xfmem = xenforeignmemory_open(0, 0); > + xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); > + > + xe = xenevtchn_open(0, 0); > + xenevtchn_fd(xe); > + > + xg = xengnttab_open(0, 0); > + xengnttab_grant_copy(xg, 0, seg); > + > + xc_domain_update_msi_irq_remapping(xc, 0, 0, 0, 0, 0 ,0); > + > + return 0; > +} > +EOF > + compile_prog "" "$xen_libs $xen_stable_libs" > + then > + xen_ctrl_version=4100 > + xen=yes There have been some change/refactoring in configure, so this won't work. The xen_ctrl_version got one more digit. Can you try with this patch? Which is also simpler. diff --git a/configure b/configure index c571ad14e5..a06f2c0b92 100755 --- a/configure +++ b/configure @@ -2021,6 +2021,24 @@ EOF # Xen unstable elif cat > $TMPC <<EOF && +#include <xenctrl.h> +int main(void) { + xc_interface *xc = NULL; + + xc_domain_update_msi_irq_remapping(xc, 0, 0, 0, 0, 0 ,0); + + return 0; +} +EOF + compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" + then + xen_stable_libs="-lxendevicemodel $xen_stable_libs" + xen_ctrl_version=41000 + xen=yes + + # Xen 4.9 + elif + cat > $TMPC <<EOF && #undef XC_WANT_COMPAT_DEVICEMODEL_API #define __XEN_TOOLS__ #include <xendevicemodel.h> > index 8e1580d..4ba43a8 100644 > --- a/include/hw/xen/xen_common.h > +++ b/include/hw/xen/xen_common.h > @@ -438,4 +438,29 @@ static inline int xengnttab_grant_copy(xengnttab_handle > *xgt, uint32_t count, > } > #endif > > +/* Xen before 4.10 */ > +#if CONFIG_XEN_CTRL_INTERFACE_VERSION < 4100 This will needs to be CONFIG_XEN_CTRL_INTERFACE_VERSION < 41000 The rest of the patch is good, Thanks, -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |