[PULL resend] drm-amdkfd-next

Oded Gabbay oded.gabbay at gmail.com
Wed Jun 3 01:45:59 PDT 2015

Hi Dave,

Resending pull request of amdkfd for 4.2
I fixed the three things you asked me:

- rename get_dbgmgr_mutex to kfd_get_dbgmgr_mutex to namespace it
- change void* to uint64_t inside ioctl arguments
- use kmalloc instead of kzalloc because we use copy_from_user
  immediately after it

Following is the original pull request text.


- Add the H/W debugger support module, including new IOCTLs to:
  - register/unregister a process as a debugged process
  - Set address watch-point in the debugged process's GPU kernel
  - Do a wave control operation in the debugged process's waves
  See the commit messages for more details on the available operations.

  The debugged process can only perform debug operation on itself. It is
  blocked by the amdkfd+H/W from performing operations on other processes's
  waves or GPU kernels. The blocking is done by setting the VMID and PASID of
  the debugged process in the packets that are sent to the CP with the debug

- Add support for static user-mode queues. These queues are regular queues,
  but because they belong to the debugged process, we need to make sure the CP
  doesn't preempt them during a debug operation. Therefore, we mark them as
  static for the CP ignore them during preemption.

- Support killing all the waves when a process is terminated. This is needed
  in case a process is terminated but we can't UNMAP its queues (can occur due
  to several reasons). In that case, the CP could be stuck unless we kill all
  its waves. This function is *very* important as it provides the kernel a high
  level of control over the GPU. The reason we didn't upstream this function
  so far, is because it is implemented using the H/W debugger module functions,
  so we had to wait until we can upstream the H/W debugger module.

- Replace declaration of bitmap from unsigned long to standard DECLARE_BITMAP



The following changes since commit 3e8d222f2a95e9d30f13107bf4e48778f79e73b8:

  Merge tag 'drm-intel-next-fixes-2015-05-29' of git://anongit.freedesktop.org/drm-intel into drm-next (2015-06-02 18:10:50 +1000)

are available in the git repository at:

  git://people.freedesktop.org/~gabbayo/linux tags/drm-amdkfd-next-2015-06-03

for you to fetch changes up to c3447e815062bb48d70a5afa0567fd6f30bc7f1b:

  drm/amdkfd: Enforce kill all waves on process termination (2015-06-03 11:34:47 +0300)

Alexey Skidanov (1):
      drm/radeon: Add ATC VMID<-->PASID functions to kfd->kgd

Ben Goz (1):
      drm/amdkfd: Enforce kill all waves on process termination

Joe Perches (1):
      drm/amdkfd: Use DECLARE_BITMAP

Yair Shachar (9):
      drm/radeon: Add H/W debugger kfd->kgd functions
      drm/amdkfd: add H/W debugger IOCTL set definitions
      drm/amdkfd: Add static user-mode queues support
      drm/amdkfd: Add skeleton H/W debugger module support
      drm/amdkfd: Add wave control operation to debugger
      drm/amdkfd: Add address watch operation to debugger
      drm/amdkfd: Implement (un)register debugger IOCTLs
      drm/amdkfd: Implement wave control debugger IOCTL
      drm/amdkfd: Implement address watch debugger IOCTL

 drivers/gpu/drm/amd/amdkfd/Makefile                |   3 +-
 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c           | 308 +++++++
 drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c            | 886 +++++++++++++++++++++
 drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.h            | 193 +++++
 drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c            | 168 ++++
 drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.h            | 294 +++++++
 drivers/gpu/drm/amd/amdkfd/kfd_device.c            |   5 +
 .../gpu/drm/amd/amdkfd/kfd_device_queue_manager.c  |  48 +-
 .../gpu/drm/amd/amdkfd/kfd_device_queue_manager.h  |   6 +
 drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c    |  46 +-
 drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers.h       |   6 +-
 drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers_diq.h   | 290 +++++++
 drivers/gpu/drm/amd/amdkfd/kfd_priv.h              |  24 +-
 drivers/gpu/drm/amd/amdkfd/kfd_process.c           |  11 +
 .../gpu/drm/amd/amdkfd/kfd_process_queue_manager.c |  18 +-
 drivers/gpu/drm/amd/include/kgd_kfd_interface.h    |  21 +
 drivers/gpu/drm/radeon/cik_reg.h                   |  56 +-
 drivers/gpu/drm/radeon/cikd.h                      |   9 +-
 drivers/gpu/drm/radeon/radeon_kfd.c                | 151 +++-
 include/uapi/linux/kfd_ioctl.h                     |  43 +-
 20 files changed, 2551 insertions(+), 35 deletions(-)
 create mode 100644 drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.c
 create mode 100644 drivers/gpu/drm/amd/amdkfd/kfd_dbgdev.h
 create mode 100644 drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.c
 create mode 100644 drivers/gpu/drm/amd/amdkfd/kfd_dbgmgr.h
 create mode 100644 drivers/gpu/drm/amd/amdkfd/kfd_pm4_headers_diq.h

More information about the dri-devel mailing list