mbox series

[RFC,0/6] do not store GPU address in TTM

Message ID 20200213120203.29368-1-nirmoy.das@amd.com (mailing list archive)
Headers show
Series do not store GPU address in TTM | expand

Message

Nirmoy Das Feb. 13, 2020, 12:01 p.m. UTC
With this patch series I am trying to remove GPU address dependency in
TTM and moving GPU address calculation to individual drm drivers.
This is required[1] to continue the work started by Brian Welty to create
struct drm_mem_region which can be leverage by DRM cgroup controller to manage memory
limits.


I have only manage to test amdgpu driver as I only have GPU for that.
I might be doing something really stupid while calculeting gpu offset for
some of the drivers so please be patient and let me know how can I improve
that.

[1] https://www.mail-archive.com/dri-devel@lists.freedesktop.org/msg272238.html

Nirmoy Das (6):
  drm/amdgpu: move ttm bo->offset to amdgpu_bo
  drm/radeon: don't use ttm bo->offset
  drm/vmwgfx: don't use ttm bo->offset
  drm/nouveau: don't use ttm bo->offset
  drm/qxl: don't use ttm bo->offset
  drm/ttm: do not keep GPU dependent addresses

 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c  | 22 ++++++++++++++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.h  |  1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c     | 29 ++++++++++++++++-----
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h     |  1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c |  4 +--
 drivers/gpu/drm/nouveau/dispnv04/crtc.c     |  6 ++---
 drivers/gpu/drm/nouveau/dispnv04/disp.c     |  2 +-
 drivers/gpu/drm/nouveau/dispnv04/overlay.c  |  6 ++---
 drivers/gpu/drm/nouveau/dispnv50/base507c.c |  2 +-
 drivers/gpu/drm/nouveau/dispnv50/core507d.c |  2 +-
 drivers/gpu/drm/nouveau/dispnv50/ovly507e.c |  2 +-
 drivers/gpu/drm/nouveau/dispnv50/wndw.c     |  2 +-
 drivers/gpu/drm/nouveau/dispnv50/wndwc37e.c |  2 +-
 drivers/gpu/drm/nouveau/nouveau_abi16.c     |  8 +++---
 drivers/gpu/drm/nouveau/nouveau_bo.c        |  1 +
 drivers/gpu/drm/nouveau/nouveau_bo.h        |  3 +++
 drivers/gpu/drm/nouveau/nouveau_chan.c      |  2 +-
 drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  2 +-
 drivers/gpu/drm/nouveau/nouveau_gem.c       | 10 +++----
 drivers/gpu/drm/qxl/qxl_drv.h               |  6 ++---
 drivers/gpu/drm/qxl/qxl_kms.c               |  3 +++
 drivers/gpu/drm/qxl/qxl_object.h            |  5 ----
 drivers/gpu/drm/qxl/qxl_ttm.c               |  9 -------
 drivers/gpu/drm/radeon/radeon.h             |  1 +
 drivers/gpu/drm/radeon/radeon_object.h      | 16 +++++++++++-
 drivers/gpu/drm/radeon/radeon_ttm.c         |  4 +--
 drivers/gpu/drm/ttm/ttm_bo.c                |  7 -----
 drivers/gpu/drm/vmwgfx/vmwgfx_bo.c          |  4 +--
 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c     |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c        |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c  |  2 --
 include/drm/ttm/ttm_bo_api.h                |  2 --
 include/drm/ttm/ttm_bo_driver.h             |  1 -
 33 files changed, 99 insertions(+), 72 deletions(-)

--
2.25.0

Comments

Thomas Zimmermann Feb. 14, 2020, 9:19 a.m. UTC | #1
Hi

Am 13.02.20 um 13:01 schrieb Nirmoy Das:
> With this patch series I am trying to remove GPU address dependency in
> TTM and moving GPU address calculation to individual drm drivers.
> This is required[1] to continue the work started by Brian Welty to create
> struct drm_mem_region which can be leverage by DRM cgroup controller to manage memory
> limits.
> 
> 
> I have only manage to test amdgpu driver as I only have GPU for that.
> I might be doing something really stupid while calculeting gpu offset for
> some of the drivers so please be patient and let me know how can I improve
> that.
> 
> [1] https://www.mail-archive.com/dri-devel@lists.freedesktop.org/msg272238.html
> 
> Nirmoy Das (6):
>   drm/amdgpu: move ttm bo->offset to amdgpu_bo
>   drm/radeon: don't use ttm bo->offset
>   drm/vmwgfx: don't use ttm bo->offset
>   drm/nouveau: don't use ttm bo->offset
>   drm/qxl: don't use ttm bo->offset
>   drm/ttm: do not keep GPU dependent addresses

I think VRAM helpers are missing from this patchset. [1] You can use
bochs in qemu to test them.

Best regards
Thomas

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_gem_vram_helper.c?h=v5.6-rc1#n217

> 
>  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c  | 22 ++++++++++++++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_object.h  |  1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c     | 29 ++++++++++++++++-----
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h     |  1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c |  4 +--
>  drivers/gpu/drm/nouveau/dispnv04/crtc.c     |  6 ++---
>  drivers/gpu/drm/nouveau/dispnv04/disp.c     |  2 +-
>  drivers/gpu/drm/nouveau/dispnv04/overlay.c  |  6 ++---
>  drivers/gpu/drm/nouveau/dispnv50/base507c.c |  2 +-
>  drivers/gpu/drm/nouveau/dispnv50/core507d.c |  2 +-
>  drivers/gpu/drm/nouveau/dispnv50/ovly507e.c |  2 +-
>  drivers/gpu/drm/nouveau/dispnv50/wndw.c     |  2 +-
>  drivers/gpu/drm/nouveau/dispnv50/wndwc37e.c |  2 +-
>  drivers/gpu/drm/nouveau/nouveau_abi16.c     |  8 +++---
>  drivers/gpu/drm/nouveau/nouveau_bo.c        |  1 +
>  drivers/gpu/drm/nouveau/nouveau_bo.h        |  3 +++
>  drivers/gpu/drm/nouveau/nouveau_chan.c      |  2 +-
>  drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  2 +-
>  drivers/gpu/drm/nouveau/nouveau_gem.c       | 10 +++----
>  drivers/gpu/drm/qxl/qxl_drv.h               |  6 ++---
>  drivers/gpu/drm/qxl/qxl_kms.c               |  3 +++
>  drivers/gpu/drm/qxl/qxl_object.h            |  5 ----
>  drivers/gpu/drm/qxl/qxl_ttm.c               |  9 -------
>  drivers/gpu/drm/radeon/radeon.h             |  1 +
>  drivers/gpu/drm/radeon/radeon_object.h      | 16 +++++++++++-
>  drivers/gpu/drm/radeon/radeon_ttm.c         |  4 +--
>  drivers/gpu/drm/ttm/ttm_bo.c                |  7 -----
>  drivers/gpu/drm/vmwgfx/vmwgfx_bo.c          |  4 +--
>  drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c     |  2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c        |  2 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c  |  2 --
>  include/drm/ttm/ttm_bo_api.h                |  2 --
>  include/drm/ttm/ttm_bo_driver.h             |  1 -
>  33 files changed, 99 insertions(+), 72 deletions(-)
> 
> --
> 2.25.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
Nirmoy Feb. 14, 2020, 10:29 a.m. UTC | #2
On 2/14/20 10:19 AM, Thomas Zimmermann wrote:
> Hi
>
> Am 13.02.20 um 13:01 schrieb Nirmoy Das:
>> With this patch series I am trying to remove GPU address dependency in
>> TTM and moving GPU address calculation to individual drm drivers.
>> This is required[1] to continue the work started by Brian Welty to create
>> struct drm_mem_region which can be leverage by DRM cgroup controller to manage memory
>> limits.
>>
>>
>> I have only manage to test amdgpu driver as I only have GPU for that.
>> I might be doing something really stupid while calculeting gpu offset for
>> some of the drivers so please be patient and let me know how can I improve
>> that.
>>
>> [1] https://www.mail-archive.com/dri-devel@lists.freedesktop.org/msg272238.html
>>
>> Nirmoy Das (6):
>>    drm/amdgpu: move ttm bo->offset to amdgpu_bo
>>    drm/radeon: don't use ttm bo->offset
>>    drm/vmwgfx: don't use ttm bo->offset
>>    drm/nouveau: don't use ttm bo->offset
>>    drm/qxl: don't use ttm bo->offset
>>    drm/ttm: do not keep GPU dependent addresses
> I think VRAM helpers are missing from this patchset. [1] You can use
> bochs in qemu to test them.
Thanks Thomas. I missed that, I will add that into next revision.
>
> Best regards
> Thomas
>
> [1]
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_gem_vram_helper.c?h=v5.6-rc1#n217
>
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c  | 22 ++++++++++++++--
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.h  |  1 +
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c     | 29 ++++++++++++++++-----
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h     |  1 +
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c |  4 +--
>>   drivers/gpu/drm/nouveau/dispnv04/crtc.c     |  6 ++---
>>   drivers/gpu/drm/nouveau/dispnv04/disp.c     |  2 +-
>>   drivers/gpu/drm/nouveau/dispnv04/overlay.c  |  6 ++---
>>   drivers/gpu/drm/nouveau/dispnv50/base507c.c |  2 +-
>>   drivers/gpu/drm/nouveau/dispnv50/core507d.c |  2 +-
>>   drivers/gpu/drm/nouveau/dispnv50/ovly507e.c |  2 +-
>>   drivers/gpu/drm/nouveau/dispnv50/wndw.c     |  2 +-
>>   drivers/gpu/drm/nouveau/dispnv50/wndwc37e.c |  2 +-
>>   drivers/gpu/drm/nouveau/nouveau_abi16.c     |  8 +++---
>>   drivers/gpu/drm/nouveau/nouveau_bo.c        |  1 +
>>   drivers/gpu/drm/nouveau/nouveau_bo.h        |  3 +++
>>   drivers/gpu/drm/nouveau/nouveau_chan.c      |  2 +-
>>   drivers/gpu/drm/nouveau/nouveau_fbcon.c     |  2 +-
>>   drivers/gpu/drm/nouveau/nouveau_gem.c       | 10 +++----
>>   drivers/gpu/drm/qxl/qxl_drv.h               |  6 ++---
>>   drivers/gpu/drm/qxl/qxl_kms.c               |  3 +++
>>   drivers/gpu/drm/qxl/qxl_object.h            |  5 ----
>>   drivers/gpu/drm/qxl/qxl_ttm.c               |  9 -------
>>   drivers/gpu/drm/radeon/radeon.h             |  1 +
>>   drivers/gpu/drm/radeon/radeon_object.h      | 16 +++++++++++-
>>   drivers/gpu/drm/radeon/radeon_ttm.c         |  4 +--
>>   drivers/gpu/drm/ttm/ttm_bo.c                |  7 -----
>>   drivers/gpu/drm/vmwgfx/vmwgfx_bo.c          |  4 +--
>>   drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c     |  2 +-
>>   drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c        |  2 +-
>>   drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c  |  2 --
>>   include/drm/ttm/ttm_bo_api.h                |  2 --
>>   include/drm/ttm/ttm_bo_driver.h             |  1 -
>>   33 files changed, 99 insertions(+), 72 deletions(-)
>>
>> --
>> 2.25.0
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>>