Re: [PATCH 3/5] drm/amdgpu: Paper over the drm_driver mangling for virt

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

 



On Fri, Oct 30, 2020 at 11:41 AM Liu, Monk <Monk.Liu@xxxxxxx> wrote:
>
> [AMD Official Use Only - Internal Distribution Only]
>
> What's the purpose of the patch sets
>
> e.g.: what bug can those 5 patches fix or what feature provided
>
> for this particular one (3/5) I didn't see how it helpful, could you give a background  ?

It's good to make function tables const, so that they can be write
protected. More resilience against exploits and all that. This patch
here is needed to be able to make drm_device->driver const so that all
other drivers can make their drm_driver structure const. Would be good
to fully fix up amdgpu like in the comment, but I'm not going that in
this series here.
-Daniel

>
> thanks
> _____________________________________
> Monk Liu|GPU Virtualization Team |AMD
>
>
> -----Original Message-----
> From: Daniel Vetter <daniel.vetter@xxxxxxxx>
> Sent: Friday, October 30, 2020 6:11 PM
> To: DRI Development <dri-devel@xxxxxxxxxxxxxxxxxxxxx>
> Cc: Intel Graphics Development <intel-gfx@xxxxxxxxxxxxxxxxxxxxx>; Daniel Vetter <daniel.vetter@xxxxxxxx>; Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Koenig, Christian <Christian.Koenig@xxxxxxx>; Quan, Evan <Evan.Quan@xxxxxxx>; Kuehling, Felix <Felix.Kuehling@xxxxxxx>; Zhang, Hawking <Hawking.Zhang@xxxxxxx>; Grodzovsky, Andrey <Andrey.Grodzovsky@xxxxxxx>; Tuikov, Luben <Luben.Tuikov@xxxxxxx>; Thomas Zimmermann <tzimmermann@xxxxxxx>; Liu, Monk <Monk.Liu@xxxxxxx>; Yintian Tao <yttao@xxxxxxx>; Li, Dennis <Dennis.Li@xxxxxxx>; Liu, Shaoyun <Shaoyun.Liu@xxxxxxx>; Zhang, Bokun <Bokun.Zhang@xxxxxxx>; Yang, Stanley <Stanley.Yang@xxxxxxx>; Sheng, Wenhui <Wenhui.Sheng@xxxxxxx>; Gong, Curry <Curry.Gong@xxxxxxx>; Daniel Vetter <daniel.vetter@xxxxxxxxx>
> Subject: [PATCH 3/5] drm/amdgpu: Paper over the drm_driver mangling for virt
>
> Prep work to make drm_device->driver const.
>
> Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx>
> Cc: Alex Deucher <alexander.deucher@xxxxxxx>
> Cc: "Christian König" <christian.koenig@xxxxxxx>
> Cc: Evan Quan <evan.quan@xxxxxxx>
> Cc: Felix Kuehling <Felix.Kuehling@xxxxxxx>
> Cc: Hawking Zhang <Hawking.Zhang@xxxxxxx>
> Cc: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx>
> Cc: Luben Tuikov <luben.tuikov@xxxxxxx>
> Cc: Thomas Zimmermann <tzimmermann@xxxxxxx>
> Cc: Monk Liu <Monk.Liu@xxxxxxx>
> Cc: Yintian Tao <yttao@xxxxxxx>
> Cc: Dennis Li <Dennis.Li@xxxxxxx>
> Cc: shaoyunl <shaoyun.liu@xxxxxxx>
> Cc: Bokun Zhang <Bokun.Zhang@xxxxxxx>
> Cc: "Stanley.Yang" <Stanley.Yang@xxxxxxx>
> Cc: Wenhui Sheng <Wenhui.Sheng@xxxxxxx>
> Cc: chen gong <curry.gong@xxxxxxx>
> Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c  |  8 ++++----  drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 12 +++++++++++-
>  2 files changed, 15 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index 024c3b70b1aa..3d337f13ae4e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -1093,7 +1093,7 @@ static const struct pci_device_id pciidlist[] = {
>
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>
> -static struct drm_driver kms_driver;
> +struct drm_driver amdgpu_kms_driver;
>
>  static int amdgpu_pci_probe(struct pci_dev *pdev,
>      const struct pci_device_id *ent) @@ -1164,7 +1164,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
>  if (ret)
>  return ret;
>
> -adev = devm_drm_dev_alloc(&pdev->dev, &kms_driver, typeof(*adev), ddev);
> +adev = devm_drm_dev_alloc(&pdev->dev, &amdgpu_kms_driver,
> +typeof(*adev), ddev);
>  if (IS_ERR(adev))
>  return PTR_ERR(adev);
>
> @@ -1508,7 +1508,7 @@ int amdgpu_file_to_fpriv(struct file *filp, struct amdgpu_fpriv **fpriv)
>  return 0;
>  }
>
> -static struct drm_driver kms_driver = {
> +struct drm_driver amdgpu_kms_driver = {
>  .driver_features =
>      DRIVER_ATOMIC |
>      DRIVER_GEM |
> @@ -1571,7 +1571,7 @@ static int __init amdgpu_init(void)
>  goto error_fence;
>
>  DRM_INFO("amdgpu kernel modesetting enabled.\n");
> -kms_driver.num_ioctls = amdgpu_max_kms_ioctl;
> +amdgpu_kms_driver.num_ioctls = amdgpu_max_kms_ioctl;
>  amdgpu_register_atpx_handler();
>
>  /* Ignore KFD init failures. Normal when CONFIG_HSA_AMD is not set. */ diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> index d0aea5e39531..dde4c449c284 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
> @@ -45,13 +45,23 @@ bool amdgpu_virt_mmio_blocked(struct amdgpu_device *adev)
>  return RREG32_NO_KIQ(0xc040) == 0xffffffff;  }
>
> +extern struct drm_driver amdgpu_kms_driver;
> +
>  void amdgpu_virt_init_setting(struct amdgpu_device *adev)  {
>  /* enable virtual display */
>  if (adev->mode_info.num_crtc == 0)
>  adev->mode_info.num_crtc = 1;
>  adev->enable_virtual_display = true;
> -adev_to_drm(adev)->driver->driver_features &= ~DRIVER_ATOMIC;
> +
> +/*
> + * FIXME: Either make virt support atomic or make sure you have two
> + * drm_driver structs, these kind of tricks are only ok when there's
> + * guaranteed only a single device per system. This should also be done
> + * before struct drm_device is initialized.
> + */
> +amdgpu_kms_driver.driver_features &= ~DRIVER_ATOMIC;
> +
>  adev->cg_flags = 0;
>  adev->pg_flags = 0;
>  }
> --
> 2.28.0
>


-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux