* [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init
@ 2018-11-30 6:08 Zhenyu Wang
2018-11-30 6:08 ` [PATCH 2/3] drm/i915/gvt: remove unused parameter for hypervisor's host_exit call Zhenyu Wang
` (6 more replies)
0 siblings, 7 replies; 11+ messages in thread
From: Zhenyu Wang @ 2018-11-30 6:08 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-gvt-dev
Don't mark hypervisor module's host_init as optional,
but mandatory required.
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
---
drivers/gpu/drm/i915/gvt/mpt.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/gvt/mpt.h b/drivers/gpu/drm/i915/gvt/mpt.h
index 67f19992b226..ce721099a020 100644
--- a/drivers/gpu/drm/i915/gvt/mpt.h
+++ b/drivers/gpu/drm/i915/gvt/mpt.h
@@ -50,11 +50,10 @@
* Zero on success, negative error code if failed
*/
static inline int intel_gvt_hypervisor_host_init(struct device *dev,
- void *gvt, const void *ops)
+ void *gvt, const void *ops)
{
- /* optional to provide */
if (!intel_gvt_host.mpt->host_init)
- return 0;
+ return -ENODEV;
return intel_gvt_host.mpt->host_init(dev, gvt, ops);
}
--
2.19.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH 2/3] drm/i915/gvt: remove unused parameter for hypervisor's host_exit call 2018-11-30 6:08 [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init Zhenyu Wang @ 2018-11-30 6:08 ` Zhenyu Wang 2018-11-30 6:08 ` [PATCH 3/3] drm/i915/gvt: Change KVMGT as self load module Zhenyu Wang ` (5 subsequent siblings) 6 siblings, 0 replies; 11+ messages in thread From: Zhenyu Wang @ 2018-11-30 6:08 UTC (permalink / raw) To: intel-gfx; +Cc: intel-gvt-dev The parameter 'void *gvt' is not used and required for hypervisor's exit call. Even for non-merged Xen hypervisor support. So just remove it. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> --- drivers/gpu/drm/i915/gvt/gvt.c | 2 +- drivers/gpu/drm/i915/gvt/hypercall.h | 2 +- drivers/gpu/drm/i915/gvt/kvmgt.c | 2 +- drivers/gpu/drm/i915/gvt/mpt.h | 5 ++--- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/gvt.c b/drivers/gpu/drm/i915/gvt/gvt.c index 733a2a0d0c30..a5b760b7bc10 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.c +++ b/drivers/gpu/drm/i915/gvt/gvt.c @@ -316,7 +316,7 @@ void intel_gvt_clean_device(struct drm_i915_private *dev_priv) return; intel_gvt_destroy_idle_vgpu(gvt->idle_vgpu); - intel_gvt_hypervisor_host_exit(&dev_priv->drm.pdev->dev, gvt); + intel_gvt_hypervisor_host_exit(&dev_priv->drm.pdev->dev); intel_gvt_cleanup_vgpu_type_groups(gvt); intel_gvt_clean_vgpu_types(gvt); diff --git a/drivers/gpu/drm/i915/gvt/hypercall.h b/drivers/gpu/drm/i915/gvt/hypercall.h index 5af11cf1b482..e49a9247ed78 100644 --- a/drivers/gpu/drm/i915/gvt/hypercall.h +++ b/drivers/gpu/drm/i915/gvt/hypercall.h @@ -39,7 +39,7 @@ */ struct intel_gvt_mpt { int (*host_init)(struct device *dev, void *gvt, const void *ops); - void (*host_exit)(struct device *dev, void *gvt); + void (*host_exit)(struct device *dev); int (*attach_vgpu)(void *vgpu, unsigned long *handle); void (*detach_vgpu)(unsigned long handle); int (*inject_msi)(unsigned long handle, u32 addr, u16 data); diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index c1072143da1d..1bbd04d30c42 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c @@ -1467,7 +1467,7 @@ static int kvmgt_host_init(struct device *dev, void *gvt, const void *ops) return mdev_register_device(dev, &intel_vgpu_ops); } -static void kvmgt_host_exit(struct device *dev, void *gvt) +static void kvmgt_host_exit(struct device *dev) { mdev_unregister_device(dev); } diff --git a/drivers/gpu/drm/i915/gvt/mpt.h b/drivers/gpu/drm/i915/gvt/mpt.h index ce721099a020..c95ef77da62c 100644 --- a/drivers/gpu/drm/i915/gvt/mpt.h +++ b/drivers/gpu/drm/i915/gvt/mpt.h @@ -61,14 +61,13 @@ static inline int intel_gvt_hypervisor_host_init(struct device *dev, /** * intel_gvt_hypervisor_host_exit - exit GVT-g host side */ -static inline void intel_gvt_hypervisor_host_exit(struct device *dev, - void *gvt) +static inline void intel_gvt_hypervisor_host_exit(struct device *dev) { /* optional to provide */ if (!intel_gvt_host.mpt->host_exit) return; - intel_gvt_host.mpt->host_exit(dev, gvt); + intel_gvt_host.mpt->host_exit(dev); } /** -- 2.19.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/3] drm/i915/gvt: Change KVMGT as self load module 2018-11-30 6:08 [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init Zhenyu Wang 2018-11-30 6:08 ` [PATCH 2/3] drm/i915/gvt: remove unused parameter for hypervisor's host_exit call Zhenyu Wang @ 2018-11-30 6:08 ` Zhenyu Wang 2018-11-30 6:51 ` [PATCH v2] " Zhenyu Wang 2018-11-30 6:36 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init Patchwork ` (4 subsequent siblings) 6 siblings, 1 reply; 11+ messages in thread From: Zhenyu Wang @ 2018-11-30 6:08 UTC (permalink / raw) To: intel-gfx; +Cc: intel-gvt-dev This trys to make 'kvmgt' module as self loadable instead of loading by i915/gvt device model. So hypervisor specific module could be stand-alone, e.g only after loading hypervisor specific module, GVT feature could be enabled via specific hypervisor interface, e.g VFIO/mdev. So this trys to use hypervisor module register/unregister interface for that. Hypervisor module needs to take care of module reference itself when working for hypervisor interface, e.g reference counting for any VFIO/mdev creation. This makes 'kvmgt' module really split from GVT device model. User needs to load 'kvmgt' to enable VFIO/mdev interface. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> --- drivers/gpu/drm/i915/gvt/gvt.c | 107 +++++++++++---------------- drivers/gpu/drm/i915/gvt/gvt.h | 6 +- drivers/gpu/drm/i915/gvt/hypercall.h | 7 +- drivers/gpu/drm/i915/gvt/kvmgt.c | 17 +++-- drivers/gpu/drm/i915/gvt/mpt.h | 3 + drivers/gpu/drm/i915/intel_gvt.c | 9 --- 6 files changed, 65 insertions(+), 84 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/gvt.c b/drivers/gpu/drm/i915/gvt/gvt.c index a5b760b7bc10..e1c9c20918af 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.c +++ b/drivers/gpu/drm/i915/gvt/gvt.c @@ -187,52 +187,6 @@ static const struct intel_gvt_ops intel_gvt_ops = { .write_protect_handler = intel_vgpu_page_track_handler, }; -/** - * intel_gvt_init_host - Load MPT modules and detect if we're running in host - * - * This function is called at the driver loading stage. If failed to find a - * loadable MPT module or detect currently we're running in a VM, then GVT-g - * will be disabled - * - * Returns: - * Zero on success, negative error code if failed. - * - */ -int intel_gvt_init_host(void) -{ - if (intel_gvt_host.initialized) - return 0; - - /* Xen DOM U */ - if (xen_domain() && !xen_initial_domain()) - return -ENODEV; - - /* Try to load MPT modules for hypervisors */ - if (xen_initial_domain()) { - /* In Xen dom0 */ - intel_gvt_host.mpt = try_then_request_module( - symbol_get(xengt_mpt), "xengt"); - intel_gvt_host.hypervisor_type = INTEL_GVT_HYPERVISOR_XEN; - } else { -#if IS_ENABLED(CONFIG_DRM_I915_GVT_KVMGT) - /* not in Xen. Try KVMGT */ - intel_gvt_host.mpt = try_then_request_module( - symbol_get(kvmgt_mpt), "kvmgt"); - intel_gvt_host.hypervisor_type = INTEL_GVT_HYPERVISOR_KVM; -#endif - } - - /* Fail to load MPT modules - bail out */ - if (!intel_gvt_host.mpt) - return -EINVAL; - - gvt_dbg_core("Running with hypervisor %s in host mode\n", - supported_hypervisors[intel_gvt_host.hypervisor_type]); - - intel_gvt_host.initialized = true; - return 0; -} - static void init_device_info(struct intel_gvt *gvt) { struct intel_gvt_device_info *info = &gvt->device_info; @@ -316,7 +270,6 @@ void intel_gvt_clean_device(struct drm_i915_private *dev_priv) return; intel_gvt_destroy_idle_vgpu(gvt->idle_vgpu); - intel_gvt_hypervisor_host_exit(&dev_priv->drm.pdev->dev); intel_gvt_cleanup_vgpu_type_groups(gvt); intel_gvt_clean_vgpu_types(gvt); @@ -352,13 +305,6 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) struct intel_vgpu *vgpu; int ret; - /* - * Cannot initialize GVT device without intel_gvt_host gets - * initialized first. - */ - if (WARN_ON(!intel_gvt_host.initialized)) - return -EINVAL; - if (WARN_ON(dev_priv->gvt)) return -EEXIST; @@ -420,13 +366,6 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) goto out_clean_types; } - ret = intel_gvt_hypervisor_host_init(&dev_priv->drm.pdev->dev, gvt, - &intel_gvt_ops); - if (ret) { - gvt_err("failed to register gvt-g host device: %d\n", ret); - goto out_clean_types; - } - vgpu = intel_gvt_create_idle_vgpu(gvt); if (IS_ERR(vgpu)) { ret = PTR_ERR(vgpu); @@ -441,6 +380,8 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) gvt_dbg_core("gvt device initialization is done\n"); dev_priv->gvt = gvt; + intel_gvt_host.dev = &dev_priv->drm.pdev->dev; + intel_gvt_host.initialized = true; return 0; out_clean_types: @@ -467,6 +408,44 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) return ret; } -#if IS_ENABLED(CONFIG_DRM_I915_GVT_KVMGT) -MODULE_SOFTDEP("pre: kvmgt"); -#endif +int +intel_gvt_register_hypervisor(struct intel_gvt_mpt *m) +{ + int ret; + void *gvt; + + if (!intel_gvt_host.initialized) + return -ENODEV; + + if (m->type != INTEL_GVT_HYPERVISOR_KVM && + m->type != INTEL_GVT_HYPERVISOR_XEN) + return -EINVAL; + + /* Get a reference for device model module */ + if (!try_module_get(THIS_MODULE)) + return -ENODEV; + + intel_gvt_host.mpt = m; + intel_gvt_host.hypervisor_type = m->type; + gvt = (void *)kdev_to_i915(intel_gvt_host.dev)->gvt; + + ret = intel_gvt_hypervisor_host_init(intel_gvt_host.dev, gvt, + &intel_gvt_ops); + if (ret < 0) { + gvt_err("Failed to init %s hypervisor module\n", + supported_hypervisors[intel_gvt_host.hypervisor_type]); + return -ENODEV; + } + gvt_dbg_core("Running with hypervisor %s in host mode\n", + supported_hypervisors[intel_gvt_host.hypervisor_type]); + return 0; +} +EXPORT_SYMBOL_GPL(intel_gvt_register_hypervisor); + +void +intel_gvt_unregister_hypervisor(void) +{ + intel_gvt_hypervisor_host_exit(intel_gvt_host.dev); + module_put(THIS_MODULE); +} +EXPORT_SYMBOL_GPL(intel_gvt_unregister_hypervisor); diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h index b4ab1dad0143..8a4cf995d755 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.h +++ b/drivers/gpu/drm/i915/gvt/gvt.h @@ -52,12 +52,8 @@ #define GVT_MAX_VGPU 8 -enum { - INTEL_GVT_HYPERVISOR_XEN = 0, - INTEL_GVT_HYPERVISOR_KVM, -}; - struct intel_gvt_host { + struct device *dev; bool initialized; int hypervisor_type; struct intel_gvt_mpt *mpt; diff --git a/drivers/gpu/drm/i915/gvt/hypercall.h b/drivers/gpu/drm/i915/gvt/hypercall.h index e49a9247ed78..50798868ab15 100644 --- a/drivers/gpu/drm/i915/gvt/hypercall.h +++ b/drivers/gpu/drm/i915/gvt/hypercall.h @@ -33,11 +33,17 @@ #ifndef _GVT_HYPERCALL_H_ #define _GVT_HYPERCALL_H_ +enum hypervisor_type { + INTEL_GVT_HYPERVISOR_XEN = 0, + INTEL_GVT_HYPERVISOR_KVM, +}; + /* * Specific GVT-g MPT modules function collections. Currently GVT-g supports * both Xen and KVM by providing dedicated hypervisor-related MPT modules. */ struct intel_gvt_mpt { + enum hypervisor_type type; int (*host_init)(struct device *dev, void *gvt, const void *ops); void (*host_exit)(struct device *dev); int (*attach_vgpu)(void *vgpu, unsigned long *handle); @@ -67,6 +73,5 @@ struct intel_gvt_mpt { }; extern struct intel_gvt_mpt xengt_mpt; -extern struct intel_gvt_mpt kvmgt_mpt; #endif /* _GVT_HYPERCALL_H_ */ diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index 1bbd04d30c42..6b7909d796c9 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c @@ -50,6 +50,7 @@ #include "gvt.h" static const struct intel_gvt_ops *intel_gvt_ops; +static struct intel_gvt *intel_gvt; /* helper macros copied from vfio-pci */ #define VFIO_PCI_OFFSET_SHIFT 40 @@ -1459,8 +1460,10 @@ static int kvmgt_host_init(struct device *dev, void *gvt, const void *ops) struct attribute_group **kvm_vgpu_type_groups; intel_gvt_ops = ops; + intel_gvt = (struct intel_gvt *)gvt; + if (!intel_gvt_ops->get_gvt_attrs(&kvm_type_attrs, - &kvm_vgpu_type_groups)) + &kvm_vgpu_type_groups)) return -EFAULT; intel_vgpu_ops.supported_type_groups = kvm_vgpu_type_groups; @@ -1658,13 +1661,14 @@ static bool kvmgt_guest_exit(struct kvmgt_guest_info *info) static int kvmgt_attach_vgpu(void *vgpu, unsigned long *handle) { - /* nothing to do here */ + if (!try_module_get(THIS_MODULE)) + return -EINVAL; return 0; } static void kvmgt_detach_vgpu(unsigned long handle) { - /* nothing to do here */ + module_put(THIS_MODULE); } static int kvmgt_inject_msi(unsigned long handle, u32 addr, u16 data) @@ -1849,7 +1853,8 @@ static bool kvmgt_is_valid_gfn(unsigned long handle, unsigned long gfn) return ret; } -struct intel_gvt_mpt kvmgt_mpt = { +static struct intel_gvt_mpt kvmgt_mpt = { + .type = INTEL_GVT_HYPERVISOR_KVM, .host_init = kvmgt_host_init, .host_exit = kvmgt_host_exit, .attach_vgpu = kvmgt_attach_vgpu, @@ -1868,15 +1873,17 @@ struct intel_gvt_mpt kvmgt_mpt = { .put_vfio_device = kvmgt_put_vfio_device, .is_valid_gfn = kvmgt_is_valid_gfn, }; -EXPORT_SYMBOL_GPL(kvmgt_mpt); static int __init kvmgt_init(void) { + if (intel_gvt_register_hypervisor(&kvmgt_mpt) < 0) + return -ENODEV; return 0; } static void __exit kvmgt_exit(void) { + intel_gvt_unregister_hypervisor(); } module_init(kvmgt_init); diff --git a/drivers/gpu/drm/i915/gvt/mpt.h b/drivers/gpu/drm/i915/gvt/mpt.h index c95ef77da62c..181194000fbd 100644 --- a/drivers/gpu/drm/i915/gvt/mpt.h +++ b/drivers/gpu/drm/i915/gvt/mpt.h @@ -360,4 +360,7 @@ static inline bool intel_gvt_hypervisor_is_valid_gfn( return intel_gvt_host.mpt->is_valid_gfn(vgpu->handle, gfn); } +extern int intel_gvt_register_hypervisor(struct intel_gvt_mpt *); +extern void intel_gvt_unregister_hypervisor(void); + #endif /* _GVT_MPT_H_ */ diff --git a/drivers/gpu/drm/i915/intel_gvt.c b/drivers/gpu/drm/i915/intel_gvt.c index c22b3e18a0f5..d74e59e22c9d 100644 --- a/drivers/gpu/drm/i915/intel_gvt.c +++ b/drivers/gpu/drm/i915/intel_gvt.c @@ -105,15 +105,6 @@ int intel_gvt_init(struct drm_i915_private *dev_priv) return -EIO; } - /* - * We're not in host or fail to find a MPT module, disable GVT-g - */ - ret = intel_gvt_init_host(); - if (ret) { - DRM_DEBUG_DRIVER("Not in host or MPT modules not found\n"); - goto bail; - } - ret = intel_gvt_init_device(dev_priv); if (ret) { DRM_DEBUG_DRIVER("Fail to init GVT device\n"); -- 2.19.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2] drm/i915/gvt: Change KVMGT as self load module 2018-11-30 6:08 ` [PATCH 3/3] drm/i915/gvt: Change KVMGT as self load module Zhenyu Wang @ 2018-11-30 6:51 ` Zhenyu Wang 2018-11-30 15:44 ` Alex Williamson 0 siblings, 1 reply; 11+ messages in thread From: Zhenyu Wang @ 2018-11-30 6:51 UTC (permalink / raw) To: intel-gfx; +Cc: intel-gvt-dev This trys to make 'kvmgt' module as self loadable instead of loading by i915/gvt device model. So hypervisor specific module could be stand-alone, e.g only after loading hypervisor specific module, GVT feature could be enabled via specific hypervisor interface, e.g VFIO/mdev. So this trys to use hypervisor module register/unregister interface for that. Hypervisor module needs to take care of module reference itself when working for hypervisor interface, e.g reference counting for any VFIO/mdev creation. This makes 'kvmgt' module really split from GVT device model. User needs to load 'kvmgt' to enable VFIO/mdev interface. v2: - Fix kvmgt order after i915 for built-in case Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> --- drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/gvt/Makefile | 1 - drivers/gpu/drm/i915/gvt/gvt.c | 107 +++++++++++---------------- drivers/gpu/drm/i915/gvt/gvt.h | 6 +- drivers/gpu/drm/i915/gvt/hypercall.h | 7 +- drivers/gpu/drm/i915/gvt/kvmgt.c | 17 +++-- drivers/gpu/drm/i915/gvt/mpt.h | 3 + drivers/gpu/drm/i915/intel_gvt.c | 9 --- 8 files changed, 66 insertions(+), 85 deletions(-) diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index 0ff878c994e2..ae0d975a6f34 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -195,3 +195,4 @@ endif i915-y += intel_lpe_audio.o obj-$(CONFIG_DRM_I915) += i915.o +obj-$(CONFIG_DRM_I915_GVT_KVMGT) += gvt/kvmgt.o diff --git a/drivers/gpu/drm/i915/gvt/Makefile b/drivers/gpu/drm/i915/gvt/Makefile index b016dc753db9..271fb46d4dd0 100644 --- a/drivers/gpu/drm/i915/gvt/Makefile +++ b/drivers/gpu/drm/i915/gvt/Makefile @@ -7,4 +7,3 @@ GVT_SOURCE := gvt.o aperture_gm.o handlers.o vgpu.o trace_points.o firmware.o \ ccflags-y += -I$(src) -I$(src)/$(GVT_DIR) i915-y += $(addprefix $(GVT_DIR)/, $(GVT_SOURCE)) -obj-$(CONFIG_DRM_I915_GVT_KVMGT) += $(GVT_DIR)/kvmgt.o diff --git a/drivers/gpu/drm/i915/gvt/gvt.c b/drivers/gpu/drm/i915/gvt/gvt.c index a5b760b7bc10..e1c9c20918af 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.c +++ b/drivers/gpu/drm/i915/gvt/gvt.c @@ -187,52 +187,6 @@ static const struct intel_gvt_ops intel_gvt_ops = { .write_protect_handler = intel_vgpu_page_track_handler, }; -/** - * intel_gvt_init_host - Load MPT modules and detect if we're running in host - * - * This function is called at the driver loading stage. If failed to find a - * loadable MPT module or detect currently we're running in a VM, then GVT-g - * will be disabled - * - * Returns: - * Zero on success, negative error code if failed. - * - */ -int intel_gvt_init_host(void) -{ - if (intel_gvt_host.initialized) - return 0; - - /* Xen DOM U */ - if (xen_domain() && !xen_initial_domain()) - return -ENODEV; - - /* Try to load MPT modules for hypervisors */ - if (xen_initial_domain()) { - /* In Xen dom0 */ - intel_gvt_host.mpt = try_then_request_module( - symbol_get(xengt_mpt), "xengt"); - intel_gvt_host.hypervisor_type = INTEL_GVT_HYPERVISOR_XEN; - } else { -#if IS_ENABLED(CONFIG_DRM_I915_GVT_KVMGT) - /* not in Xen. Try KVMGT */ - intel_gvt_host.mpt = try_then_request_module( - symbol_get(kvmgt_mpt), "kvmgt"); - intel_gvt_host.hypervisor_type = INTEL_GVT_HYPERVISOR_KVM; -#endif - } - - /* Fail to load MPT modules - bail out */ - if (!intel_gvt_host.mpt) - return -EINVAL; - - gvt_dbg_core("Running with hypervisor %s in host mode\n", - supported_hypervisors[intel_gvt_host.hypervisor_type]); - - intel_gvt_host.initialized = true; - return 0; -} - static void init_device_info(struct intel_gvt *gvt) { struct intel_gvt_device_info *info = &gvt->device_info; @@ -316,7 +270,6 @@ void intel_gvt_clean_device(struct drm_i915_private *dev_priv) return; intel_gvt_destroy_idle_vgpu(gvt->idle_vgpu); - intel_gvt_hypervisor_host_exit(&dev_priv->drm.pdev->dev); intel_gvt_cleanup_vgpu_type_groups(gvt); intel_gvt_clean_vgpu_types(gvt); @@ -352,13 +305,6 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) struct intel_vgpu *vgpu; int ret; - /* - * Cannot initialize GVT device without intel_gvt_host gets - * initialized first. - */ - if (WARN_ON(!intel_gvt_host.initialized)) - return -EINVAL; - if (WARN_ON(dev_priv->gvt)) return -EEXIST; @@ -420,13 +366,6 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) goto out_clean_types; } - ret = intel_gvt_hypervisor_host_init(&dev_priv->drm.pdev->dev, gvt, - &intel_gvt_ops); - if (ret) { - gvt_err("failed to register gvt-g host device: %d\n", ret); - goto out_clean_types; - } - vgpu = intel_gvt_create_idle_vgpu(gvt); if (IS_ERR(vgpu)) { ret = PTR_ERR(vgpu); @@ -441,6 +380,8 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) gvt_dbg_core("gvt device initialization is done\n"); dev_priv->gvt = gvt; + intel_gvt_host.dev = &dev_priv->drm.pdev->dev; + intel_gvt_host.initialized = true; return 0; out_clean_types: @@ -467,6 +408,44 @@ int intel_gvt_init_device(struct drm_i915_private *dev_priv) return ret; } -#if IS_ENABLED(CONFIG_DRM_I915_GVT_KVMGT) -MODULE_SOFTDEP("pre: kvmgt"); -#endif +int +intel_gvt_register_hypervisor(struct intel_gvt_mpt *m) +{ + int ret; + void *gvt; + + if (!intel_gvt_host.initialized) + return -ENODEV; + + if (m->type != INTEL_GVT_HYPERVISOR_KVM && + m->type != INTEL_GVT_HYPERVISOR_XEN) + return -EINVAL; + + /* Get a reference for device model module */ + if (!try_module_get(THIS_MODULE)) + return -ENODEV; + + intel_gvt_host.mpt = m; + intel_gvt_host.hypervisor_type = m->type; + gvt = (void *)kdev_to_i915(intel_gvt_host.dev)->gvt; + + ret = intel_gvt_hypervisor_host_init(intel_gvt_host.dev, gvt, + &intel_gvt_ops); + if (ret < 0) { + gvt_err("Failed to init %s hypervisor module\n", + supported_hypervisors[intel_gvt_host.hypervisor_type]); + return -ENODEV; + } + gvt_dbg_core("Running with hypervisor %s in host mode\n", + supported_hypervisors[intel_gvt_host.hypervisor_type]); + return 0; +} +EXPORT_SYMBOL_GPL(intel_gvt_register_hypervisor); + +void +intel_gvt_unregister_hypervisor(void) +{ + intel_gvt_hypervisor_host_exit(intel_gvt_host.dev); + module_put(THIS_MODULE); +} +EXPORT_SYMBOL_GPL(intel_gvt_unregister_hypervisor); diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h index b4ab1dad0143..8a4cf995d755 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.h +++ b/drivers/gpu/drm/i915/gvt/gvt.h @@ -52,12 +52,8 @@ #define GVT_MAX_VGPU 8 -enum { - INTEL_GVT_HYPERVISOR_XEN = 0, - INTEL_GVT_HYPERVISOR_KVM, -}; - struct intel_gvt_host { + struct device *dev; bool initialized; int hypervisor_type; struct intel_gvt_mpt *mpt; diff --git a/drivers/gpu/drm/i915/gvt/hypercall.h b/drivers/gpu/drm/i915/gvt/hypercall.h index e49a9247ed78..50798868ab15 100644 --- a/drivers/gpu/drm/i915/gvt/hypercall.h +++ b/drivers/gpu/drm/i915/gvt/hypercall.h @@ -33,11 +33,17 @@ #ifndef _GVT_HYPERCALL_H_ #define _GVT_HYPERCALL_H_ +enum hypervisor_type { + INTEL_GVT_HYPERVISOR_XEN = 0, + INTEL_GVT_HYPERVISOR_KVM, +}; + /* * Specific GVT-g MPT modules function collections. Currently GVT-g supports * both Xen and KVM by providing dedicated hypervisor-related MPT modules. */ struct intel_gvt_mpt { + enum hypervisor_type type; int (*host_init)(struct device *dev, void *gvt, const void *ops); void (*host_exit)(struct device *dev); int (*attach_vgpu)(void *vgpu, unsigned long *handle); @@ -67,6 +73,5 @@ struct intel_gvt_mpt { }; extern struct intel_gvt_mpt xengt_mpt; -extern struct intel_gvt_mpt kvmgt_mpt; #endif /* _GVT_HYPERCALL_H_ */ diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index 1bbd04d30c42..6b7909d796c9 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c @@ -50,6 +50,7 @@ #include "gvt.h" static const struct intel_gvt_ops *intel_gvt_ops; +static struct intel_gvt *intel_gvt; /* helper macros copied from vfio-pci */ #define VFIO_PCI_OFFSET_SHIFT 40 @@ -1459,8 +1460,10 @@ static int kvmgt_host_init(struct device *dev, void *gvt, const void *ops) struct attribute_group **kvm_vgpu_type_groups; intel_gvt_ops = ops; + intel_gvt = (struct intel_gvt *)gvt; + if (!intel_gvt_ops->get_gvt_attrs(&kvm_type_attrs, - &kvm_vgpu_type_groups)) + &kvm_vgpu_type_groups)) return -EFAULT; intel_vgpu_ops.supported_type_groups = kvm_vgpu_type_groups; @@ -1658,13 +1661,14 @@ static bool kvmgt_guest_exit(struct kvmgt_guest_info *info) static int kvmgt_attach_vgpu(void *vgpu, unsigned long *handle) { - /* nothing to do here */ + if (!try_module_get(THIS_MODULE)) + return -EINVAL; return 0; } static void kvmgt_detach_vgpu(unsigned long handle) { - /* nothing to do here */ + module_put(THIS_MODULE); } static int kvmgt_inject_msi(unsigned long handle, u32 addr, u16 data) @@ -1849,7 +1853,8 @@ static bool kvmgt_is_valid_gfn(unsigned long handle, unsigned long gfn) return ret; } -struct intel_gvt_mpt kvmgt_mpt = { +static struct intel_gvt_mpt kvmgt_mpt = { + .type = INTEL_GVT_HYPERVISOR_KVM, .host_init = kvmgt_host_init, .host_exit = kvmgt_host_exit, .attach_vgpu = kvmgt_attach_vgpu, @@ -1868,15 +1873,17 @@ struct intel_gvt_mpt kvmgt_mpt = { .put_vfio_device = kvmgt_put_vfio_device, .is_valid_gfn = kvmgt_is_valid_gfn, }; -EXPORT_SYMBOL_GPL(kvmgt_mpt); static int __init kvmgt_init(void) { + if (intel_gvt_register_hypervisor(&kvmgt_mpt) < 0) + return -ENODEV; return 0; } static void __exit kvmgt_exit(void) { + intel_gvt_unregister_hypervisor(); } module_init(kvmgt_init); diff --git a/drivers/gpu/drm/i915/gvt/mpt.h b/drivers/gpu/drm/i915/gvt/mpt.h index c95ef77da62c..181194000fbd 100644 --- a/drivers/gpu/drm/i915/gvt/mpt.h +++ b/drivers/gpu/drm/i915/gvt/mpt.h @@ -360,4 +360,7 @@ static inline bool intel_gvt_hypervisor_is_valid_gfn( return intel_gvt_host.mpt->is_valid_gfn(vgpu->handle, gfn); } +extern int intel_gvt_register_hypervisor(struct intel_gvt_mpt *); +extern void intel_gvt_unregister_hypervisor(void); + #endif /* _GVT_MPT_H_ */ diff --git a/drivers/gpu/drm/i915/intel_gvt.c b/drivers/gpu/drm/i915/intel_gvt.c index c22b3e18a0f5..d74e59e22c9d 100644 --- a/drivers/gpu/drm/i915/intel_gvt.c +++ b/drivers/gpu/drm/i915/intel_gvt.c @@ -105,15 +105,6 @@ int intel_gvt_init(struct drm_i915_private *dev_priv) return -EIO; } - /* - * We're not in host or fail to find a MPT module, disable GVT-g - */ - ret = intel_gvt_init_host(); - if (ret) { - DRM_DEBUG_DRIVER("Not in host or MPT modules not found\n"); - goto bail; - } - ret = intel_gvt_init_device(dev_priv); if (ret) { DRM_DEBUG_DRIVER("Fail to init GVT device\n"); -- 2.19.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2] drm/i915/gvt: Change KVMGT as self load module 2018-11-30 6:51 ` [PATCH v2] " Zhenyu Wang @ 2018-11-30 15:44 ` Alex Williamson 2018-12-03 3:38 ` Zhenyu Wang 0 siblings, 1 reply; 11+ messages in thread From: Alex Williamson @ 2018-11-30 15:44 UTC (permalink / raw) To: Zhenyu Wang; +Cc: intel-gfx, intel-gvt-dev On Fri, 30 Nov 2018 14:51:24 +0800 Zhenyu Wang <zhenyuw@linux.intel.com> wrote: > This trys to make 'kvmgt' module as self loadable instead of loading > by i915/gvt device model. So hypervisor specific module could be > stand-alone, e.g only after loading hypervisor specific module, GVT > feature could be enabled via specific hypervisor interface, e.g VFIO/mdev. > > So this trys to use hypervisor module register/unregister interface > for that. Hypervisor module needs to take care of module reference > itself when working for hypervisor interface, e.g reference counting > for any VFIO/mdev creation. This doesn't sound right and I don't see that it's how it works today. mdev core doesn't take a reference to the vendor driver, it's the vendor driver's responsibility to take a module reference when a device is opened. Likewise created, but unused devices probably shouldn't hold a reference, they should be cleaned up on module release callback. Thanks, Alex _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2] drm/i915/gvt: Change KVMGT as self load module 2018-11-30 15:44 ` Alex Williamson @ 2018-12-03 3:38 ` Zhenyu Wang 0 siblings, 0 replies; 11+ messages in thread From: Zhenyu Wang @ 2018-12-03 3:38 UTC (permalink / raw) To: Alex Williamson; +Cc: intel-gfx, intel-gvt-dev [-- Attachment #1.1: Type: text/plain, Size: 1566 bytes --] On 2018.11.30 08:44:23 -0700, Alex Williamson wrote: > On Fri, 30 Nov 2018 14:51:24 +0800 > Zhenyu Wang <zhenyuw@linux.intel.com> wrote: > > > This trys to make 'kvmgt' module as self loadable instead of loading > > by i915/gvt device model. So hypervisor specific module could be > > stand-alone, e.g only after loading hypervisor specific module, GVT > > feature could be enabled via specific hypervisor interface, e.g VFIO/mdev. > > > > So this trys to use hypervisor module register/unregister interface > > for that. Hypervisor module needs to take care of module reference > > itself when working for hypervisor interface, e.g reference counting > > for any VFIO/mdev creation. > > This doesn't sound right and I don't see that it's how it works today. > mdev core doesn't take a reference to the vendor driver, it's the > vendor driver's responsibility to take a module reference when a device > is opened. Likewise created, but unused devices probably shouldn't > hold a reference, they should be cleaned up on module release > callback. Thanks, > In this patch kvmgt driver trys to take module reference when device created and put when destroy, and yeah I think your point is right, we'd better handle reference when device is opened or released, and when hypervisor module releases it would call mdev core device unregister which has already handled unused devices clean up. Will refresh in that manner. Thanks -- Open Source Technology Center, Intel ltd. $gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827 [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init 2018-11-30 6:08 [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init Zhenyu Wang 2018-11-30 6:08 ` [PATCH 2/3] drm/i915/gvt: remove unused parameter for hypervisor's host_exit call Zhenyu Wang 2018-11-30 6:08 ` [PATCH 3/3] drm/i915/gvt: Change KVMGT as self load module Zhenyu Wang @ 2018-11-30 6:36 ` Patchwork 2018-11-30 7:00 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) Patchwork ` (3 subsequent siblings) 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2018-11-30 6:36 UTC (permalink / raw) To: Zhenyu Wang; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init URL : https://patchwork.freedesktop.org/series/53295/ State : warning == Summary == $ dim checkpatch origin/drm-tip 94364be0a5bd drm/i915/gvt: mandatory require hypervisor's host_init b05bd0f5a1be drm/i915/gvt: remove unused parameter for hypervisor's host_exit call b2e8ea08988b drm/i915/gvt: Change KVMGT as self load module -:296: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files #296: FILE: drivers/gpu/drm/i915/gvt/mpt.h:363: +extern int intel_gvt_register_hypervisor(struct intel_gvt_mpt *); -:297: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files #297: FILE: drivers/gpu/drm/i915/gvt/mpt.h:364: +extern void intel_gvt_unregister_hypervisor(void); total: 0 errors, 0 warnings, 2 checks, 259 lines checked _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) 2018-11-30 6:08 [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init Zhenyu Wang ` (2 preceding siblings ...) 2018-11-30 6:36 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init Patchwork @ 2018-11-30 7:00 ` Patchwork 2018-11-30 7:03 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init Patchwork ` (2 subsequent siblings) 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2018-11-30 7:00 UTC (permalink / raw) To: Zhenyu Wang; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) URL : https://patchwork.freedesktop.org/series/53295/ State : warning == Summary == $ dim checkpatch origin/drm-tip 25b08ad36ccf drm/i915/gvt: mandatory require hypervisor's host_init 4d20195445d2 drm/i915/gvt: remove unused parameter for hypervisor's host_exit call 24675b883322 drm/i915/gvt: Change KVMGT as self load module -:317: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files #317: FILE: drivers/gpu/drm/i915/gvt/mpt.h:363: +extern int intel_gvt_register_hypervisor(struct intel_gvt_mpt *); -:318: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files #318: FILE: drivers/gpu/drm/i915/gvt/mpt.h:364: +extern void intel_gvt_unregister_hypervisor(void); total: 0 errors, 0 warnings, 2 checks, 266 lines checked _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init 2018-11-30 6:08 [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init Zhenyu Wang ` (3 preceding siblings ...) 2018-11-30 7:00 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) Patchwork @ 2018-11-30 7:03 ` Patchwork 2018-11-30 7:17 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) Patchwork 2018-11-30 22:36 ` ✗ Fi.CI.IGT: failure " Patchwork 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2018-11-30 7:03 UTC (permalink / raw) To: Zhenyu Wang; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init URL : https://patchwork.freedesktop.org/series/53295/ State : success == Summary == CI Bug Log - changes from CI_DRM_5227 -> Patchwork_10972 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/53295/revisions/1/mbox/ Known issues ------------ Here are the changes found in Patchwork_10972 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence: - fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362] #### Possible fixes #### * igt@gem_exec_suspend@basic-s4-devices: - fi-ivb-3520m: FAIL [fdo#108880] -> PASS * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: FAIL [fdo#103167] -> PASS #### Warnings #### * igt@i915_selftest@live_contexts: - {fi-icl-u3}: INCOMPLETE [fdo#108315] -> DMESG-FAIL [fdo#108569] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 [fdo#108315]: https://bugs.freedesktop.org/show_bug.cgi?id=108315 [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569 [fdo#108880]: https://bugs.freedesktop.org/show_bug.cgi?id=108880 Participating hosts (50 -> 44) ------------------------------ Additional (1): fi-glk-j4005 Missing (7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-bdw-samus Build changes ------------- * Linux: CI_DRM_5227 -> Patchwork_10972 CI_DRM_5227: 95052693524067ba66e1a6733355739fbcc8d5b6 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4736: 285ebfb3b7adc56586031afa5150c4e5ad40c229 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10972: b2e8ea08988b9a5103dc5370ca032beaad11a8e7 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == b2e8ea08988b drm/i915/gvt: Change KVMGT as self load module b05bd0f5a1be drm/i915/gvt: remove unused parameter for hypervisor's host_exit call 94364be0a5bd drm/i915/gvt: mandatory require hypervisor's host_init == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10972/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) 2018-11-30 6:08 [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init Zhenyu Wang ` (4 preceding siblings ...) 2018-11-30 7:03 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init Patchwork @ 2018-11-30 7:17 ` Patchwork 2018-11-30 22:36 ` ✗ Fi.CI.IGT: failure " Patchwork 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2018-11-30 7:17 UTC (permalink / raw) To: Zhenyu Wang; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) URL : https://patchwork.freedesktop.org/series/53295/ State : success == Summary == CI Bug Log - changes from CI_DRM_5227 -> Patchwork_10973 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://patchwork.freedesktop.org/api/1.0/series/53295/revisions/2/mbox/ Known issues ------------ Here are the changes found in Patchwork_10973 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_selftest@live_coherency: - fi-gdg-551: PASS -> DMESG-FAIL [fdo#107164] * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence: - fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362] #### Possible fixes #### * igt@gem_ctx_create@basic-files: - fi-bsw-kefka: FAIL [fdo#108656] -> PASS * igt@gem_exec_suspend@basic-s4-devices: - fi-ivb-3520m: FAIL [fdo#108880] -> PASS * igt@kms_frontbuffer_tracking@basic: - fi-byt-clapper: FAIL [fdo#103167] -> PASS #### Warnings #### * igt@i915_selftest@live_contexts: - {fi-icl-u3}: INCOMPLETE [fdo#108315] -> DMESG-FAIL [fdo#108569] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191 [fdo#107164]: https://bugs.freedesktop.org/show_bug.cgi?id=107164 [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362 [fdo#108315]: https://bugs.freedesktop.org/show_bug.cgi?id=108315 [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569 [fdo#108656]: https://bugs.freedesktop.org/show_bug.cgi?id=108656 [fdo#108880]: https://bugs.freedesktop.org/show_bug.cgi?id=108880 Participating hosts (50 -> 42) ------------------------------ Additional (1): fi-glk-j4005 Missing (9): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-icl-y fi-bdw-samus fi-kbl-r Build changes ------------- * Linux: CI_DRM_5227 -> Patchwork_10973 CI_DRM_5227: 95052693524067ba66e1a6733355739fbcc8d5b6 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4736: 285ebfb3b7adc56586031afa5150c4e5ad40c229 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10973: 24675b883322f0ea6fb19131b760c784cd20d25e @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 24675b883322 drm/i915/gvt: Change KVMGT as self load module 4d20195445d2 drm/i915/gvt: remove unused parameter for hypervisor's host_exit call 25b08ad36ccf drm/i915/gvt: mandatory require hypervisor's host_init == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10973/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
* ✗ Fi.CI.IGT: failure for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) 2018-11-30 6:08 [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init Zhenyu Wang ` (5 preceding siblings ...) 2018-11-30 7:17 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) Patchwork @ 2018-11-30 22:36 ` Patchwork 6 siblings, 0 replies; 11+ messages in thread From: Patchwork @ 2018-11-30 22:36 UTC (permalink / raw) To: Zhenyu Wang; +Cc: intel-gfx == Series Details == Series: series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) URL : https://patchwork.freedesktop.org/series/53295/ State : failure == Summary == CI Bug Log - changes from CI_DRM_5227_full -> Patchwork_10973_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_10973_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_10973_full, please notify your bug team to allow them to document this new failure mode, which will reduce false positives in CI. Possible new issues ------------------- Here are the unknown changes that may have been introduced in Patchwork_10973_full: ### IGT changes ### #### Possible regressions #### * igt@kms_draw_crc@draw-method-xrgb8888-pwrite-ytiled: - shard-skl: PASS -> FAIL #### Warnings #### * igt@pm_rc6_residency@rc6-accuracy: - shard-snb: PASS -> SKIP Known issues ------------ Here are the changes found in Patchwork_10973_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ppgtt@blt-vs-render-ctxn: - shard-kbl: PASS -> INCOMPLETE [fdo#103665] / [fdo#106023] / [fdo#106887] * igt@i915_suspend@shrink: - shard-skl: NOTRUN -> INCOMPLETE [fdo#106886] * igt@kms_chv_cursor_fail@pipe-a-128x128-bottom-edge: - shard-skl: PASS -> FAIL [fdo#104671] * igt@kms_color@pipe-a-ctm-max: - shard-apl: PASS -> FAIL [fdo#108147] * igt@kms_cursor_crc@cursor-128x128-offscreen: - shard-skl: PASS -> FAIL [fdo#103232] +2 * igt@kms_cursor_crc@cursor-128x128-suspend: - shard-skl: PASS -> INCOMPLETE [fdo#104108] * igt@kms_cursor_crc@cursor-256x256-dpms: - shard-glk: PASS -> FAIL [fdo#103232] +1 * igt@kms_cursor_crc@cursor-64x64-suspend: - {shard-iclb}: NOTRUN -> FAIL [fdo#103232] * igt@kms_draw_crc@draw-method-xrgb8888-render-ytiled: - {shard-iclb}: PASS -> WARN [fdo#108336] +1 * igt@kms_flip@dpms-off-confusion: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] +11 * igt@kms_flip@flip-vs-expired-vblank: - shard-skl: PASS -> FAIL [fdo#105363] +1 * igt@kms_flip_tiling@flip-changes-tiling-y: - shard-skl: PASS -> FAIL [fdo#107931] / [fdo#108303] * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-wc: - shard-skl: PASS -> FAIL [fdo#105682] +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-cpu: - shard-apl: PASS -> FAIL [fdo#103167] * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite: - {shard-iclb}: PASS -> DMESG-FAIL [fdo#107724] +8 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-fullscreen: - {shard-iclb}: PASS -> FAIL [fdo#103167] +1 * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-blt: - shard-skl: PASS -> FAIL [fdo#103167] +1 * igt@kms_plane_alpha_blend@pipe-b-alpha-basic: - shard-skl: NOTRUN -> FAIL [fdo#107815] / [fdo#108145] * igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb: - shard-glk: PASS -> FAIL [fdo#108145] * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc: - shard-skl: PASS -> FAIL [fdo#107815] * igt@kms_plane_multiple@atomic-pipe-a-tiling-yf: - {shard-iclb}: PASS -> FAIL [fdo#103166] * igt@kms_plane_multiple@atomic-pipe-c-tiling-y: - shard-glk: PASS -> FAIL [fdo#103166] * igt@kms_plane_scaling@pipe-c-scaler-with-rotation: - {shard-iclb}: NOTRUN -> DMESG-WARN [fdo#107724] * igt@kms_rotation_crc@primary-rotation-180: - shard-skl: PASS -> FAIL [fdo#103925] / [fdo#107815] * igt@kms_rotation_crc@primary-y-tiled-reflect-x-270: - {shard-iclb}: PASS -> DMESG-WARN [fdo#107724] / [fdo#108336] +3 * igt@kms_setmode@basic: - shard-apl: PASS -> FAIL [fdo#99912] * igt@pm_backlight@fade_with_suspend: - {shard-iclb}: NOTRUN -> FAIL [fdo#107847] * igt@pm_rpm@dpms-lpsp: - shard-skl: PASS -> INCOMPLETE [fdo#107807] * igt@pm_rpm@gem-execbuf-stress-extra-wait: - shard-skl: PASS -> INCOMPLETE [fdo#107803] / [fdo#107807] * {igt@runner@aborted}: - {shard-iclb}: NOTRUN -> FAIL [fdo#108866 ] #### Possible fixes #### * igt@kms_busy@extended-modeset-hang-newfb-render-c: - {shard-iclb}: DMESG-WARN [fdo#107956] -> PASS * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c: - shard-hsw: DMESG-WARN [fdo#107956] -> PASS * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c: - shard-glk: DMESG-WARN [fdo#107956] -> PASS * igt@kms_cursor_crc@cursor-128x128-random: - shard-apl: FAIL [fdo#103232] -> PASS +1 * igt@kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-untiled: - shard-skl: FAIL [fdo#103184] -> PASS * igt@kms_flip@flip-vs-expired-vblank: - shard-glk: FAIL [fdo#105363] -> PASS * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-cpu: - shard-glk: FAIL [fdo#103167] -> PASS +1 * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt: - shard-apl: FAIL [fdo#103167] -> PASS +1 * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite: - {shard-iclb}: FAIL [fdo#103167] -> PASS +5 * igt@kms_plane@plane-position-covered-pipe-b-planes: - shard-glk: FAIL [fdo#103166] -> PASS +3 - {shard-iclb}: FAIL [fdo#103166] -> PASS +1 * igt@kms_plane@plane-position-covered-pipe-c-planes: - shard-apl: FAIL [fdo#103166] -> PASS +2 * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc: - shard-skl: FAIL [fdo#107815] / [fdo#108145] -> PASS * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc: - shard-skl: FAIL [fdo#107815] -> PASS * igt@kms_plane_scaling@pipe-a-scaler-with-rotation: - {shard-iclb}: DMESG-WARN [fdo#107724] -> PASS * igt@pm_rpm@dpms-mode-unset-lpsp: - shard-skl: INCOMPLETE [fdo#107807] -> PASS #### Warnings #### * igt@i915_selftest@live_contexts: - {shard-iclb}: DMESG-FAIL [fdo#108569] -> INCOMPLETE [fdo#108315] * igt@kms_ccs@pipe-a-crc-sprite-planes-basic: - {shard-iclb}: FAIL [fdo#107725] -> DMESG-WARN [fdo#107724] / [fdo#108336] * igt@kms_cursor_crc@cursor-256x256-random: - {shard-iclb}: FAIL [fdo#103232] -> DMESG-WARN [fdo#107724] / [fdo#108336] {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166 [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167 [fdo#103184]: https://bugs.freedesktop.org/show_bug.cgi?id=103184 [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232 [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665 [fdo#103925]: https://bugs.freedesktop.org/show_bug.cgi?id=103925 [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108 [fdo#104671]: https://bugs.freedesktop.org/show_bug.cgi?id=104671 [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363 [fdo#105682]: https://bugs.freedesktop.org/show_bug.cgi?id=105682 [fdo#106023]: https://bugs.freedesktop.org/show_bug.cgi?id=106023 [fdo#106886]: https://bugs.freedesktop.org/show_bug.cgi?id=106886 [fdo#106887]: https://bugs.freedesktop.org/show_bug.cgi?id=106887 [fdo#107724]: https://bugs.freedesktop.org/show_bug.cgi?id=107724 [fdo#107725]: https://bugs.freedesktop.org/show_bug.cgi?id=107725 [fdo#107803]: https://bugs.freedesktop.org/show_bug.cgi?id=107803 [fdo#107807]: https://bugs.freedesktop.org/show_bug.cgi?id=107807 [fdo#107815]: https://bugs.freedesktop.org/show_bug.cgi?id=107815 [fdo#107847]: https://bugs.freedesktop.org/show_bug.cgi?id=107847 [fdo#107931]: https://bugs.freedesktop.org/show_bug.cgi?id=107931 [fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956 [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#108147]: https://bugs.freedesktop.org/show_bug.cgi?id=108147 [fdo#108303]: https://bugs.freedesktop.org/show_bug.cgi?id=108303 [fdo#108315]: https://bugs.freedesktop.org/show_bug.cgi?id=108315 [fdo#108336]: https://bugs.freedesktop.org/show_bug.cgi?id=108336 [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569 [fdo#108866 ]: https://bugs.freedesktop.org/show_bug.cgi?id=108866 [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912 Participating hosts (7 -> 7) ------------------------------ No changes in participating hosts Build changes ------------- * Linux: CI_DRM_5227 -> Patchwork_10973 CI_DRM_5227: 95052693524067ba66e1a6733355739fbcc8d5b6 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_4736: 285ebfb3b7adc56586031afa5150c4e5ad40c229 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_10973: 24675b883322f0ea6fb19131b760c784cd20d25e @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_10973/ _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2018-12-03 3:38 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-11-30 6:08 [PATCH 1/3] drm/i915/gvt: mandatory require hypervisor's host_init Zhenyu Wang 2018-11-30 6:08 ` [PATCH 2/3] drm/i915/gvt: remove unused parameter for hypervisor's host_exit call Zhenyu Wang 2018-11-30 6:08 ` [PATCH 3/3] drm/i915/gvt: Change KVMGT as self load module Zhenyu Wang 2018-11-30 6:51 ` [PATCH v2] " Zhenyu Wang 2018-11-30 15:44 ` Alex Williamson 2018-12-03 3:38 ` Zhenyu Wang 2018-11-30 6:36 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init Patchwork 2018-11-30 7:00 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) Patchwork 2018-11-30 7:03 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init Patchwork 2018-11-30 7:17 ` ✓ Fi.CI.BAT: success for series starting with [1/3] drm/i915/gvt: mandatory require hypervisor's host_init (rev2) Patchwork 2018-11-30 22:36 ` ✗ Fi.CI.IGT: failure " Patchwork
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.