All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: "Wang, Zhi A" <zhi.a.wang@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>,
	Greg KH <gregkh@linuxfoundation.org>,
	Christoph Hellwig <hch@lst.de>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"intel-gvt-dev@lists.freedesktop.org" 
	<intel-gvt-dev@lists.freedesktop.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Subject: Re: refactor the i915 GVT support
Date: Wed, 28 Jul 2021 14:59:25 -0300	[thread overview]
Message-ID: <20210728175925.GU1721383@nvidia.com> (raw)
In-Reply-To: <DM4PR11MB5549EC882AA6076F3468274DCAEA9@DM4PR11MB5549.namprd11.prod.outlook.com>

On Wed, Jul 28, 2021 at 01:38:58PM +0000, Wang, Zhi A wrote:

> I guess those APIs you were talking about are KVM-only. For other
> hypervisors, e.g. Xen, ARCN cannot use the APIs you mentioned. Not
> sure if you have already noticed that VFIO is KVM-only right now.

There is very little hard connection between VFIO and KVM, so no, I
don't think that is completely true.

In an event, an in-tree version of other hypervisor support for GVT
needs to go through enabling VFIO support so that the existing API
multiplexers we have can be used properly, not adding a shim layer
trying to recreate VFIO inside a GPU driver.

> GVT-g is designed for many hypervisors not only KVM. In the design,
> we implemented an abstraction layer for different hypervisors. You
> can check the link in the previous email which has an example of how
> the MPT module "xengt" supports GVT-g running under Xen.  For
> example, injecting a msi in VFIO/KVM is via playing with
> eventfd. But in Xen, we need to issue a hypercall from Dom0. 

This is obviously bad design, Xen should plug into the standardized
eventfd scheme as well and trigger its hypercall this way. Then it can
integrate with the existing VFIO interrupt abstraction infrastructure.

> others, like querying mappings between GFN and HFN. 

This should be done through VFIO containers, there is nothing KVM
specific there.

> As you can see, to survive from this situation, we have to rely on
> an abstraction layer so that we can prevent introducing coding
> blocks like in the core logic:

No, you have to fix the abstractions we already have to support the
matrix of things you care about. If this can't be done then maybe we
can add new abstractions, but abstractions like this absoultely should
not be done inside drivers.

Jason

WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: "Wang, Zhi A" <zhi.a.wang@intel.com>
Cc: "dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	Greg KH <gregkh@linuxfoundation.org>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>,
	"intel-gvt-dev@lists.freedesktop.org"
	<intel-gvt-dev@lists.freedesktop.org>,
	Christoph Hellwig <hch@lst.de>
Subject: Re: refactor the i915 GVT support
Date: Wed, 28 Jul 2021 14:59:25 -0300	[thread overview]
Message-ID: <20210728175925.GU1721383@nvidia.com> (raw)
In-Reply-To: <DM4PR11MB5549EC882AA6076F3468274DCAEA9@DM4PR11MB5549.namprd11.prod.outlook.com>

On Wed, Jul 28, 2021 at 01:38:58PM +0000, Wang, Zhi A wrote:

> I guess those APIs you were talking about are KVM-only. For other
> hypervisors, e.g. Xen, ARCN cannot use the APIs you mentioned. Not
> sure if you have already noticed that VFIO is KVM-only right now.

There is very little hard connection between VFIO and KVM, so no, I
don't think that is completely true.

In an event, an in-tree version of other hypervisor support for GVT
needs to go through enabling VFIO support so that the existing API
multiplexers we have can be used properly, not adding a shim layer
trying to recreate VFIO inside a GPU driver.

> GVT-g is designed for many hypervisors not only KVM. In the design,
> we implemented an abstraction layer for different hypervisors. You
> can check the link in the previous email which has an example of how
> the MPT module "xengt" supports GVT-g running under Xen.  For
> example, injecting a msi in VFIO/KVM is via playing with
> eventfd. But in Xen, we need to issue a hypercall from Dom0. 

This is obviously bad design, Xen should plug into the standardized
eventfd scheme as well and trigger its hypercall this way. Then it can
integrate with the existing VFIO interrupt abstraction infrastructure.

> others, like querying mappings between GFN and HFN. 

This should be done through VFIO containers, there is nothing KVM
specific there.

> As you can see, to survive from this situation, we have to rely on
> an abstraction layer so that we can prevent introducing coding
> blocks like in the core logic:

No, you have to fix the abstractions we already have to support the
matrix of things you care about. If this can't be done then maybe we
can add new abstractions, but abstractions like this absoultely should
not be done inside drivers.

Jason

WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: "Wang, Zhi A" <zhi.a.wang@intel.com>
Cc: "dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	Greg KH <gregkh@linuxfoundation.org>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	"intel-gvt-dev@lists.freedesktop.org"
	<intel-gvt-dev@lists.freedesktop.org>,
	Christoph Hellwig <hch@lst.de>
Subject: Re: [Intel-gfx] refactor the i915 GVT support
Date: Wed, 28 Jul 2021 14:59:25 -0300	[thread overview]
Message-ID: <20210728175925.GU1721383@nvidia.com> (raw)
In-Reply-To: <DM4PR11MB5549EC882AA6076F3468274DCAEA9@DM4PR11MB5549.namprd11.prod.outlook.com>

On Wed, Jul 28, 2021 at 01:38:58PM +0000, Wang, Zhi A wrote:

> I guess those APIs you were talking about are KVM-only. For other
> hypervisors, e.g. Xen, ARCN cannot use the APIs you mentioned. Not
> sure if you have already noticed that VFIO is KVM-only right now.

There is very little hard connection between VFIO and KVM, so no, I
don't think that is completely true.

In an event, an in-tree version of other hypervisor support for GVT
needs to go through enabling VFIO support so that the existing API
multiplexers we have can be used properly, not adding a shim layer
trying to recreate VFIO inside a GPU driver.

> GVT-g is designed for many hypervisors not only KVM. In the design,
> we implemented an abstraction layer for different hypervisors. You
> can check the link in the previous email which has an example of how
> the MPT module "xengt" supports GVT-g running under Xen.  For
> example, injecting a msi in VFIO/KVM is via playing with
> eventfd. But in Xen, we need to issue a hypercall from Dom0. 

This is obviously bad design, Xen should plug into the standardized
eventfd scheme as well and trigger its hypercall this way. Then it can
integrate with the existing VFIO interrupt abstraction infrastructure.

> others, like querying mappings between GFN and HFN. 

This should be done through VFIO containers, there is nothing KVM
specific there.

> As you can see, to survive from this situation, we have to rely on
> an abstraction layer so that we can prevent introducing coding
> blocks like in the core logic:

No, you have to fix the abstractions we already have to support the
matrix of things you care about. If this can't be done then maybe we
can add new abstractions, but abstractions like this absoultely should
not be done inside drivers.

Jason
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2021-07-28 17:59 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-21 15:53 refactor the i915 GVT support Christoph Hellwig
2021-07-21 15:53 ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 01/21] drm/i915/gvt: integrate into the main Makefile Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-08-03  9:27   ` Zhenyu Wang
2021-08-03  9:27     ` [Intel-gfx] " Zhenyu Wang
2021-07-21 15:53 ` [PATCH 02/21] drm/i915/gvt: remove module refcounting in intel_gvt_{,un}register_hypervisor Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] [PATCH 02/21] drm/i915/gvt: remove module refcounting in intel_gvt_{, un}register_hypervisor Christoph Hellwig
2021-07-21 15:53 ` [PATCH 03/21] drm/i915/gvt: remove enum hypervisor_type Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 04/21] drm/i915/gvt: move the gvt code into kvmgt.ko Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-08-09 11:29   ` Joonas Lahtinen
2021-08-09 11:29     ` [Intel-gfx] " Joonas Lahtinen
2021-08-09 14:29     ` Christoph Hellwig
2021-08-09 14:29       ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 05/21] drm/i915/gvt: remove intel_gvt_ops Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 06/21] drm/i915/gvt: remove the map_gfn_to_mfn and set_trap_area ops Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 07/21] drm/i915/gvt: remove the unused from_virt_to_mfn op Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 08/21] drm/i915/gvt: merge struct kvmgt_vdev into struct intel_vgpu Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 09/21] drm/i915/gvt: merge struct kvmgt_guest_info into strut intel_vgpu Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 10/21] drm/i915/gvt: remove vgpu->handle Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 11/21] drm/i915/gvt: devirtualize ->{read,write}_gpa Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] [PATCH 11/21] drm/i915/gvt: devirtualize ->{read, write}_gpa Christoph Hellwig
2021-07-21 15:53 ` [PATCH 12/21] drm/i915/gvt: devirtualize ->{get,put}_vfio_device Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] [PATCH 12/21] drm/i915/gvt: devirtualize ->{get, put}_vfio_device Christoph Hellwig
2021-07-21 15:53 ` [PATCH 13/21] drm/i915/gvt: devirtualize ->set_edid and ->set_opregion Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 14/21] drm/i915/gvt: devirtualize ->detach_vgpu Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 15/21] drm/i915/gvt: devirtualize ->inject_msi Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 16/21] drm/i915/gvt: devirtualize ->is_valid_gfn Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 17/21] drm/i915/gvt: devirtualize ->gfn_to_mfn Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 18/21] drm/i915/gvt: devirtualize ->{enable,disable}_page_track Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] [PATCH 18/21] drm/i915/gvt: devirtualize ->{enable, disable}_page_track Christoph Hellwig
2021-07-21 15:53 ` [PATCH 19/21] drm/i915/gvt: devirtualize ->dma_{,un}map_guest_page Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] [PATCH 19/21] drm/i915/gvt: devirtualize ->dma_{, un}map_guest_page Christoph Hellwig
2021-07-21 15:53 ` [PATCH 20/21] drm/i915/gvt: devirtualize dma_pin_guest_page Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 15:53 ` [PATCH 21/21] drm/i915/gvt: remove struct intel_gvt_mpt Christoph Hellwig
2021-07-21 15:53   ` [Intel-gfx] " Christoph Hellwig
2021-07-21 17:42 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [01/21] drm/i915/gvt: integrate into the main Makefile Patchwork
2021-07-21 17:43 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-07-21 18:12 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-07-21 21:14 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2021-07-22  9:45 ` refactor the i915 GVT support Zhenyu Wang
2021-07-22  9:45   ` [Intel-gfx] " Zhenyu Wang
2021-07-22  9:45   ` Zhenyu Wang
2021-07-22 12:55   ` Christoph Hellwig
2021-07-22 12:55     ` [Intel-gfx] " Christoph Hellwig
2021-07-22 10:49 ` Wang, Zhi A
2021-07-22 10:49   ` [Intel-gfx] " Wang, Zhi A
2021-07-22 10:49   ` Wang, Zhi A
2021-07-22 11:26   ` Gerd Hoffmann
2021-07-22 11:26     ` [Intel-gfx] " Gerd Hoffmann
2021-07-22 11:26     ` Gerd Hoffmann
2021-07-27 12:12     ` Jason Gunthorpe
2021-07-27 12:12       ` [Intel-gfx] " Jason Gunthorpe
2021-07-27 12:12       ` Jason Gunthorpe
2021-07-28 13:38       ` Wang, Zhi A
2021-07-28 13:38         ` [Intel-gfx] " Wang, Zhi A
2021-07-28 13:38         ` Wang, Zhi A
2021-07-28 13:43         ` Greg KH
2021-07-28 13:43           ` [Intel-gfx] " Greg KH
2021-07-28 13:43           ` Greg KH
2021-07-28 17:59         ` Jason Gunthorpe [this message]
2021-07-28 17:59           ` [Intel-gfx] " Jason Gunthorpe
2021-07-28 17:59           ` Jason Gunthorpe
2021-07-29  7:20           ` Christoph Hellwig
2021-07-29  7:20             ` [Intel-gfx] " Christoph Hellwig
2021-07-29  7:30             ` Daniel Vetter
2021-07-29  7:30               ` Daniel Vetter
2021-07-29  7:30               ` Daniel Vetter
2021-08-03  9:43             ` Zhenyu Wang
2021-08-03  9:43               ` [Intel-gfx] " Zhenyu Wang
2021-08-03  9:43               ` Zhenyu Wang
2021-08-03 14:30               ` Jason Gunthorpe
2021-08-03 14:30                 ` [Intel-gfx] " Jason Gunthorpe
2021-08-03 14:30                 ` Jason Gunthorpe
2021-08-04  5:26                 ` Zhenyu Wang
2021-08-04  5:26                   ` [Intel-gfx] " Zhenyu Wang
2021-08-04  5:26                   ` Zhenyu Wang
2021-08-16 17:34                   ` Christoph Hellwig
2021-08-16 17:34                     ` [Intel-gfx] " Christoph Hellwig
2021-08-17  1:08                     ` Zhenyu Wang
2021-08-17  1:08                       ` [Intel-gfx] " Zhenyu Wang
2021-08-17  1:08                       ` Zhenyu Wang
2021-08-17  5:22                       ` Zhenyu Wang
2021-08-17  5:22                         ` [Intel-gfx] " Zhenyu Wang
2021-08-17  5:22                         ` Zhenyu Wang
2021-08-19  8:29                         ` Zhenyu Wang
2021-08-19  8:29                           ` [Intel-gfx] " Zhenyu Wang
2021-08-19  8:29                           ` Zhenyu Wang
2021-08-19 14:43                           ` Joonas Lahtinen
2021-08-19 14:43                             ` [Intel-gfx] " Joonas Lahtinen
2021-08-19 14:43                             ` Joonas Lahtinen
2021-08-26  6:04                             ` Zhenyu Wang
2021-08-26  6:04                               ` [Intel-gfx] " Zhenyu Wang
2021-08-26  6:04                               ` Zhenyu Wang
2021-08-20 14:17                           ` Christoph Hellwig
2021-08-20 14:17                             ` [Intel-gfx] " Christoph Hellwig
2021-08-20 19:56                             ` Luis Chamberlain
2021-08-20 19:56                               ` [Intel-gfx] " Luis Chamberlain
2021-08-20 19:56                               ` Luis Chamberlain
2021-08-26  6:12                               ` Zhenyu Wang
2021-08-26  6:12                                 ` [Intel-gfx] " Zhenyu Wang
2021-08-26  6:12                                 ` Zhenyu Wang
2021-09-28  7:41                                 ` Wang, Zhi A
2021-09-28  7:41                                   ` [Intel-gfx] " Wang, Zhi A
2021-09-28  7:41                                   ` Wang, Zhi A
2021-09-28 14:00                                   ` Luis Chamberlain
2021-09-28 14:00                                     ` [Intel-gfx] " Luis Chamberlain
2021-09-28 14:00                                     ` Luis Chamberlain
2021-09-28 14:35                                     ` Wang, Zhi A
2021-09-28 14:35                                       ` [Intel-gfx] " Wang, Zhi A
2021-09-28 14:35                                       ` Wang, Zhi A
2021-09-28 15:05                                       ` Jason Gunthorpe
2021-09-28 15:05                                         ` [Intel-gfx] " Jason Gunthorpe
2021-09-28 15:05                                         ` Jason Gunthorpe
2021-09-29 18:27                                         ` Wang, Zhi A
2021-09-29 18:27                                           ` [Intel-gfx] " Wang, Zhi A
2021-09-29 18:27                                           ` Wang, Zhi A
2021-09-29 18:55                                           ` Jason Gunthorpe
2021-09-29 18:55                                             ` [Intel-gfx] " Jason Gunthorpe
2021-09-29 18:55                                             ` Jason Gunthorpe
2021-10-01 13:01                                             ` Wang, Zhi A
2021-10-01 13:01                                               ` Wang, Zhi A
2021-10-01 13:01                                               ` [Intel-gfx] " Wang, Zhi A
2021-10-05  7:33                                               ` Wang, Zhi A
2021-10-05  7:33                                                 ` [Intel-gfx] " Wang, Zhi A
2021-09-30  5:24                                           ` Christoph Hellwig
2021-09-30  5:24                                             ` [Intel-gfx] " Christoph Hellwig
2021-08-26  6:08                             ` Zhenyu Wang
2021-08-26  6:08                               ` [Intel-gfx] " Zhenyu Wang
2021-08-26  6:08                               ` Zhenyu Wang
2021-08-04  5:40                 ` Christoph Hellwig
2021-08-04  5:40                   ` [Intel-gfx] " Christoph Hellwig
2021-09-28 14:24                 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for refactor the i915 GVT support (rev2) Patchwork
2021-09-28 14:54                 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-09-28 16:12                 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2021-07-29  8:19           ` refactor the i915 GVT support Wang, Zhi A
2021-07-29  8:19             ` [Intel-gfx] " Wang, Zhi A
2021-07-29  8:19             ` Wang, Zhi A
2021-08-19  9:41       ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for " Patchwork
2021-07-22 13:16   ` Greg KH
2021-07-22 13:16     ` [Intel-gfx] " Greg KH
2021-07-22 13:16     ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210728175925.GU1721383@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hch@lst.de \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=kraxel@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=zhenyuw@linux.intel.com \
    --cc=zhi.a.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.