Am 18.08.2016 um 19:48 schrieb Marek Olšák: > From: Marek Olšák <marek.olsak at amd.com> > > For profiling. > > Signed-off-by: Marek Olšák <marek.olsak at amd.com> Reviewed-by: Christian König <christian.koenig at amd.com>. > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 + > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 3 +++ > include/uapi/drm/amdgpu_drm.h | 2 ++ > 3 files changed, 6 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index 2d7072a..a75d45a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -46,20 +46,21 @@ > > #include "amdgpu_amdkfd.h" > > /* > * KMS wrapper. > * - 3.0.0 - initial driver > * - 3.1.0 - allow reading more status registers (GRBM, SRBM, SDMA, CP) > * - 3.2.0 - GFX8: Uses EOP_TC_WB_ACTION_EN, so UMDs don't have to do the same > * at the end of IBs. > * - 3.3.0 - Add VM support for UVD on supported hardware. > + * - 3.4.0 - Add AMDGPU_INFO_NUM_EVICTIONS. > */ > #define KMS_DRIVER_MAJOR 3 > #define KMS_DRIVER_MINOR 3 > #define KMS_DRIVER_PATCHLEVEL 0 > > int amdgpu_vram_limit = 0; > int amdgpu_gart_size = -1; /* auto */ > int amdgpu_max_bo_reloc_rate = -1; /* auto */ > int amdgpu_benchmarking = 0; > int amdgpu_testing = 0; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > index 0fb5488..f0c01da 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > @@ -360,20 +360,23 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file > ret = amdgpu_firmware_info(&fw_info, &info->query_fw, adev); > if (ret) > return ret; > > return copy_to_user(out, &fw_info, > min((size_t)size, sizeof(fw_info))) ? -EFAULT : 0; > } > case AMDGPU_INFO_NUM_BYTES_MOVED: > ui64 = atomic64_read(&adev->num_bytes_moved); > return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; > + case AMDGPU_INFO_NUM_EVICTIONS: > + ui64 = atomic64_read(&adev->num_evictions); > + return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; > case AMDGPU_INFO_VRAM_USAGE: > ui64 = atomic64_read(&adev->vram_usage); > return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; > case AMDGPU_INFO_VIS_VRAM_USAGE: > ui64 = atomic64_read(&adev->vram_vis_usage); > return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; > case AMDGPU_INFO_GTT_USAGE: > ui64 = atomic64_read(&adev->gtt_usage); > return copy_to_user(out, &ui64, min(size, 8u)) ? -EFAULT : 0; > case AMDGPU_INFO_GDS_CONFIG: { > diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h > index 8df3816..72eb21a 100644 > --- a/include/uapi/drm/amdgpu_drm.h > +++ b/include/uapi/drm/amdgpu_drm.h > @@ -474,20 +474,22 @@ struct drm_amdgpu_cs_chunk_data { > /* Information about GDS, etc. resource configuration */ > #define AMDGPU_INFO_GDS_CONFIG 0x13 > /* Query information about VRAM and GTT domains */ > #define AMDGPU_INFO_VRAM_GTT 0x14 > /* Query information about register in MMR address space*/ > #define AMDGPU_INFO_READ_MMR_REG 0x15 > /* Query information about device: rev id, family, etc. */ > #define AMDGPU_INFO_DEV_INFO 0x16 > /* visible vram usage */ > #define AMDGPU_INFO_VIS_VRAM_USAGE 0x17 > +/* number of TTM buffer evictions */ > +#define AMDGPU_INFO_NUM_EVICTIONS 0x18 > > #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0 > #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff > #define AMDGPU_INFO_MMR_SH_INDEX_SHIFT 8 > #define AMDGPU_INFO_MMR_SH_INDEX_MASK 0xff > > struct drm_amdgpu_query_fw { > /** AMDGPU_INFO_FW_* */ > __u32 fw_type; > /**