vfio/gvt: fix DRM_I915_GVT dependency on VFIO_MDEV

Message ID 20210422133547.1861063-1-arnd@kernel.org
State New
Headers show
Series
  • vfio/gvt: fix DRM_I915_GVT dependency on VFIO_MDEV
Related show

Commit Message

Arnd Bergmann April 22, 2021, 1:35 p.m.
From: Arnd Bergmann <arnd@arndb.de>


The Kconfig dependency is incomplete since DRM_I915_GVT is a 'bool'
symbol that depends on the 'tristate' VFIO_MDEV. This allows a
configuration with VFIO_MDEV=m, DRM_I915_GVT=y and DRM_I915=y that
causes a link failure:

x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `available_instances_show':
gvt.c:(.text+0x67a): undefined reference to `mtype_get_parent_dev'
x86_64-linux-ld: gvt.c:(.text+0x6a5): undefined reference to `mtype_get_type_group_id'
x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `description_show':
gvt.c:(.text+0x76e): undefined reference to `mtype_get_parent_dev'
x86_64-linux-ld: gvt.c:(.text+0x799): undefined reference to `mtype_get_type_group_id'

Clarify the dependency by specifically disallowing the broken
configuration. If VFIO_MDEV is built-in, it will work, but if
VFIO_MDEV=m, the i915 driver cannot be built-in here.

Fixes: 07e543f4f9d1 ("vfio/gvt: Make DRM_I915_GVT depend on VFIO_MDEV")
Fixes: 9169cff168ff ("vfio/mdev: Correct the function signatures for the mdev_type_attributes")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
 drivers/gpu/drm/i915/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.29.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Comments

Jason Gunthorpe April 22, 2021, 1:58 p.m. | #1
On Thu, Apr 22, 2021 at 03:35:33PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>

> 

> The Kconfig dependency is incomplete since DRM_I915_GVT is a 'bool'

> symbol that depends on the 'tristate' VFIO_MDEV. This allows a

> configuration with VFIO_MDEV=m, DRM_I915_GVT=y and DRM_I915=y that

> causes a link failure:

> 

> x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `available_instances_show':

> gvt.c:(.text+0x67a): undefined reference to `mtype_get_parent_dev'

> x86_64-linux-ld: gvt.c:(.text+0x6a5): undefined reference to `mtype_get_type_group_id'

> x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `description_show':

> gvt.c:(.text+0x76e): undefined reference to `mtype_get_parent_dev'

> x86_64-linux-ld: gvt.c:(.text+0x799): undefined reference to `mtype_get_type_group_id'

> 

> Clarify the dependency by specifically disallowing the broken

> configuration. If VFIO_MDEV is built-in, it will work, but if

> VFIO_MDEV=m, the i915 driver cannot be built-in here.

> 

> Fixes: 07e543f4f9d1 ("vfio/gvt: Make DRM_I915_GVT depend on VFIO_MDEV")

> Fixes: 9169cff168ff ("vfio/mdev: Correct the function signatures for the mdev_type_attributes")

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> ---

>  drivers/gpu/drm/i915/Kconfig | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)


Oh kconfig stuff like this makes my head hurt, thanks for finding it

I also can't see an alternative to this ugly thing, besides having the
i915 guys properly modularize this code someday

Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>


Jason
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Jani Nikula April 22, 2021, 2:51 p.m. | #2
Cc: gvt list & maintainers

On Thu, 22 Apr 2021, Jason Gunthorpe <jgg@ziepe.ca> wrote:
> On Thu, Apr 22, 2021 at 03:35:33PM +0200, Arnd Bergmann wrote:

>> From: Arnd Bergmann <arnd@arndb.de>

>> 

>> The Kconfig dependency is incomplete since DRM_I915_GVT is a 'bool'

>> symbol that depends on the 'tristate' VFIO_MDEV. This allows a

>> configuration with VFIO_MDEV=m, DRM_I915_GVT=y and DRM_I915=y that

>> causes a link failure:

>> 

>> x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `available_instances_show':

>> gvt.c:(.text+0x67a): undefined reference to `mtype_get_parent_dev'

>> x86_64-linux-ld: gvt.c:(.text+0x6a5): undefined reference to `mtype_get_type_group_id'

>> x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `description_show':

>> gvt.c:(.text+0x76e): undefined reference to `mtype_get_parent_dev'

>> x86_64-linux-ld: gvt.c:(.text+0x799): undefined reference to `mtype_get_type_group_id'

>> 

>> Clarify the dependency by specifically disallowing the broken

>> configuration. If VFIO_MDEV is built-in, it will work, but if

>> VFIO_MDEV=m, the i915 driver cannot be built-in here.

>> 

>> Fixes: 07e543f4f9d1 ("vfio/gvt: Make DRM_I915_GVT depend on VFIO_MDEV")

>> Fixes: 9169cff168ff ("vfio/mdev: Correct the function signatures for the mdev_type_attributes")

>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

>> ---

>>  drivers/gpu/drm/i915/Kconfig | 2 +-

>>  1 file changed, 1 insertion(+), 1 deletion(-)

>

> Oh kconfig stuff like this makes my head hurt, thanks for finding it

>

> I also can't see an alternative to this ugly thing, besides having the

> i915 guys properly modularize this code someday

>

> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>

>

> Jason


-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Zhenyu Wang April 23, 2021, 3:54 a.m. | #3
On 2021.04.22 10:58:10 -0300, Jason Gunthorpe wrote:
> On Thu, Apr 22, 2021 at 03:35:33PM +0200, Arnd Bergmann wrote:

> > From: Arnd Bergmann <arnd@arndb.de>

> > 

> > The Kconfig dependency is incomplete since DRM_I915_GVT is a 'bool'

> > symbol that depends on the 'tristate' VFIO_MDEV. This allows a

> > configuration with VFIO_MDEV=m, DRM_I915_GVT=y and DRM_I915=y that

> > causes a link failure:

> > 

> > x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `available_instances_show':

> > gvt.c:(.text+0x67a): undefined reference to `mtype_get_parent_dev'

> > x86_64-linux-ld: gvt.c:(.text+0x6a5): undefined reference to `mtype_get_type_group_id'

> > x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `description_show':

> > gvt.c:(.text+0x76e): undefined reference to `mtype_get_parent_dev'

> > x86_64-linux-ld: gvt.c:(.text+0x799): undefined reference to `mtype_get_type_group_id'

> > 

> > Clarify the dependency by specifically disallowing the broken

> > configuration. If VFIO_MDEV is built-in, it will work, but if

> > VFIO_MDEV=m, the i915 driver cannot be built-in here.

> > 

> > Fixes: 07e543f4f9d1 ("vfio/gvt: Make DRM_I915_GVT depend on VFIO_MDEV")

> > Fixes: 9169cff168ff ("vfio/mdev: Correct the function signatures for the mdev_type_attributes")

> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> > ---

> >  drivers/gpu/drm/i915/Kconfig | 2 +-

> >  1 file changed, 1 insertion(+), 1 deletion(-)

> 

> Oh kconfig stuff like this makes my head hurt, thanks for finding it

> 

> I also can't see an alternative to this ugly thing, besides having the

> i915 guys properly modularize this code someday

> 

> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>

> 


I don't really want this mess to propagate further. We should move
mdev related stuff to kvmgt module instead, so not pretend any more to
possibly use that for other hypervisor..

Sorry that I didn't realize this issue when Jason proposed this. Let
me do the left cleanup.

Thanks
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Jason Gunthorpe April 23, 2021, 12:07 p.m. | #4
On Fri, Apr 23, 2021 at 11:54:26AM +0800, Zhenyu Wang wrote:
> On 2021.04.22 10:58:10 -0300, Jason Gunthorpe wrote:

> > On Thu, Apr 22, 2021 at 03:35:33PM +0200, Arnd Bergmann wrote:

> > > From: Arnd Bergmann <arnd@arndb.de>

> > > 

> > > The Kconfig dependency is incomplete since DRM_I915_GVT is a 'bool'

> > > symbol that depends on the 'tristate' VFIO_MDEV. This allows a

> > > configuration with VFIO_MDEV=m, DRM_I915_GVT=y and DRM_I915=y that

> > > causes a link failure:

> > > 

> > > x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `available_instances_show':

> > > gvt.c:(.text+0x67a): undefined reference to `mtype_get_parent_dev'

> > > x86_64-linux-ld: gvt.c:(.text+0x6a5): undefined reference to `mtype_get_type_group_id'

> > > x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `description_show':

> > > gvt.c:(.text+0x76e): undefined reference to `mtype_get_parent_dev'

> > > x86_64-linux-ld: gvt.c:(.text+0x799): undefined reference to `mtype_get_type_group_id'

> > > 

> > > Clarify the dependency by specifically disallowing the broken

> > > configuration. If VFIO_MDEV is built-in, it will work, but if

> > > VFIO_MDEV=m, the i915 driver cannot be built-in here.

> > > 

> > > Fixes: 07e543f4f9d1 ("vfio/gvt: Make DRM_I915_GVT depend on VFIO_MDEV")

> > > Fixes: 9169cff168ff ("vfio/mdev: Correct the function signatures for the mdev_type_attributes")

> > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> > >  drivers/gpu/drm/i915/Kconfig | 2 +-

> > >  1 file changed, 1 insertion(+), 1 deletion(-)

> > 

> > Oh kconfig stuff like this makes my head hurt, thanks for finding it

> > 

> > I also can't see an alternative to this ugly thing, besides having the

> > i915 guys properly modularize this code someday

> > 

> > Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>

> > 

> 

> I don't really want this mess to propagate further. We should move

> mdev related stuff to kvmgt module instead, so not pretend any more to

> possibly use that for other hypervisor..

> 

> Sorry that I didn't realize this issue when Jason proposed this. Let

> me do the left cleanup.


It would be good, but Alex should still take this patch for the
upcoming merge window, you can revert it when you do all the cleanups

Jason
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Alex Williamson April 23, 2021, 3:20 p.m. | #5
On Fri, 23 Apr 2021 09:07:09 -0300
Jason Gunthorpe <jgg@ziepe.ca> wrote:

> On Fri, Apr 23, 2021 at 11:54:26AM +0800, Zhenyu Wang wrote:

> > On 2021.04.22 10:58:10 -0300, Jason Gunthorpe wrote:  

> > > On Thu, Apr 22, 2021 at 03:35:33PM +0200, Arnd Bergmann wrote:  

> > > > From: Arnd Bergmann <arnd@arndb.de>

> > > > 

> > > > The Kconfig dependency is incomplete since DRM_I915_GVT is a 'bool'

> > > > symbol that depends on the 'tristate' VFIO_MDEV. This allows a

> > > > configuration with VFIO_MDEV=m, DRM_I915_GVT=y and DRM_I915=y that

> > > > causes a link failure:

> > > > 

> > > > x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `available_instances_show':

> > > > gvt.c:(.text+0x67a): undefined reference to `mtype_get_parent_dev'

> > > > x86_64-linux-ld: gvt.c:(.text+0x6a5): undefined reference to `mtype_get_type_group_id'

> > > > x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `description_show':

> > > > gvt.c:(.text+0x76e): undefined reference to `mtype_get_parent_dev'

> > > > x86_64-linux-ld: gvt.c:(.text+0x799): undefined reference to `mtype_get_type_group_id'

> > > > 

> > > > Clarify the dependency by specifically disallowing the broken

> > > > configuration. If VFIO_MDEV is built-in, it will work, but if

> > > > VFIO_MDEV=m, the i915 driver cannot be built-in here.

> > > > 

> > > > Fixes: 07e543f4f9d1 ("vfio/gvt: Make DRM_I915_GVT depend on VFIO_MDEV")

> > > > Fixes: 9169cff168ff ("vfio/mdev: Correct the function signatures for the mdev_type_attributes")

> > > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> > > >  drivers/gpu/drm/i915/Kconfig | 2 +-

> > > >  1 file changed, 1 insertion(+), 1 deletion(-)  

> > > 

> > > Oh kconfig stuff like this makes my head hurt, thanks for finding it

> > > 

> > > I also can't see an alternative to this ugly thing, besides having the

> > > i915 guys properly modularize this code someday

> > > 

> > > Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>

> > >   

> > 

> > I don't really want this mess to propagate further. We should move

> > mdev related stuff to kvmgt module instead, so not pretend any more to

> > possibly use that for other hypervisor..

> > 

> > Sorry that I didn't realize this issue when Jason proposed this. Let

> > me do the left cleanup.  

> 

> It would be good, but Alex should still take this patch for the

> upcoming merge window, you can revert it when you do all the cleanups


I can include it, but I'll wait for confirmation from Zhenyu.  Thanks,

Alex

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
Zhenyu Wang April 25, 2021, 3:23 a.m. | #6
On 2021.04.23 09:20:09 -0600, Alex Williamson wrote:
> On Fri, 23 Apr 2021 09:07:09 -0300

> Jason Gunthorpe <jgg@ziepe.ca> wrote:

> 

> > On Fri, Apr 23, 2021 at 11:54:26AM +0800, Zhenyu Wang wrote:

> > > On 2021.04.22 10:58:10 -0300, Jason Gunthorpe wrote:  

> > > > On Thu, Apr 22, 2021 at 03:35:33PM +0200, Arnd Bergmann wrote:  

> > > > > From: Arnd Bergmann <arnd@arndb.de>

> > > > > 

> > > > > The Kconfig dependency is incomplete since DRM_I915_GVT is a 'bool'

> > > > > symbol that depends on the 'tristate' VFIO_MDEV. This allows a

> > > > > configuration with VFIO_MDEV=m, DRM_I915_GVT=y and DRM_I915=y that

> > > > > causes a link failure:

> > > > > 

> > > > > x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `available_instances_show':

> > > > > gvt.c:(.text+0x67a): undefined reference to `mtype_get_parent_dev'

> > > > > x86_64-linux-ld: gvt.c:(.text+0x6a5): undefined reference to `mtype_get_type_group_id'

> > > > > x86_64-linux-ld: drivers/gpu/drm/i915/gvt/gvt.o: in function `description_show':

> > > > > gvt.c:(.text+0x76e): undefined reference to `mtype_get_parent_dev'

> > > > > x86_64-linux-ld: gvt.c:(.text+0x799): undefined reference to `mtype_get_type_group_id'

> > > > > 

> > > > > Clarify the dependency by specifically disallowing the broken

> > > > > configuration. If VFIO_MDEV is built-in, it will work, but if

> > > > > VFIO_MDEV=m, the i915 driver cannot be built-in here.

> > > > > 

> > > > > Fixes: 07e543f4f9d1 ("vfio/gvt: Make DRM_I915_GVT depend on VFIO_MDEV")

> > > > > Fixes: 9169cff168ff ("vfio/mdev: Correct the function signatures for the mdev_type_attributes")

> > > > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> > > > >  drivers/gpu/drm/i915/Kconfig | 2 +-

> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)  

> > > > 

> > > > Oh kconfig stuff like this makes my head hurt, thanks for finding it

> > > > 

> > > > I also can't see an alternative to this ugly thing, besides having the

> > > > i915 guys properly modularize this code someday

> > > > 

> > > > Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>

> > > >   

> > > 

> > > I don't really want this mess to propagate further. We should move

> > > mdev related stuff to kvmgt module instead, so not pretend any more to

> > > possibly use that for other hypervisor..

> > > 

> > > Sorry that I didn't realize this issue when Jason proposed this. Let

> > > me do the left cleanup.  

> > 

> > It would be good, but Alex should still take this patch for the

> > upcoming merge window, you can revert it when you do all the cleanups

> 

> I can include it, but I'll wait for confirmation from Zhenyu.  Thanks,

> 


I'm ok with this, future cleanup fixes would still go through i915 pull,
it only lefts for some tests, will send that for next kernel.

Acked-by: Zhenyu Wang <zhenyuw@linux.intel.com>


thanks
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Patch

diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
index 7a5b7a93d33e..791cc9556863 100644
--- a/drivers/gpu/drm/i915/Kconfig
+++ b/drivers/gpu/drm/i915/Kconfig
@@ -111,7 +111,7 @@  config DRM_I915_GVT
 	bool "Enable Intel GVT-g graphics virtualization host support"
 	depends on DRM_I915
 	depends on 64BIT
-	depends on VFIO_MDEV
+	depends on VFIO_MDEV=y || VFIO_MDEV=DRM_I915
 	default n
 	help
 	  Choose this option if you want to enable Intel GVT-g graphics