public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jerome Glisse <j.glisse@gmail.com>
To: Oded Gabbay <oded.gabbay@gmail.com>
Cc: David Airlie <airlied@linux.ie>,
	Alex Deucher <alexander.deucher@amd.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	John Bridgman <John.Bridgman@amd.com>,
	Andrew Lewycky <Andrew.Lewycky@amd.com>,
	Joerg Roedel <joro@8bytes.org>,
	Evgeny Pinchuk <evgeny.pinchuk@amd.com>,
	Oded Gabbay <oded.gabbay@amd.com>, Ben Goz <ben.goz@amd.com>,
	Alexey Skidanov <Alexey.Skidanov@amd.com>,
	linux-api@vger.kernel.org
Subject: Re: [PATCH 32/83] hsa/radeon: implementing IOCTL for clock counters
Date: Fri, 11 Jul 2014 16:34:56 -0400	[thread overview]
Message-ID: <20140711203455.GR1870@gmail.com> (raw)
In-Reply-To: <1405029279-6894-4-git-send-email-oded.gabbay@amd.com>

On Fri, Jul 11, 2014 at 12:53:48AM +0300, Oded Gabbay wrote:
> From: Evgeny Pinchuk <evgeny.pinchuk@amd.com>
> 
> Implemented new IOCTL to query the CPU and GPU clock counters.
> 
> Signed-off-by: Evgeny Pinchuk <evgeny.pinchuk@amd.com>
> Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
> ---
>  drivers/gpu/hsa/radeon/kfd_chardev.c | 37 ++++++++++++++++++++++++++++++++++++
>  include/uapi/linux/kfd_ioctl.h       |  9 +++++++++
>  2 files changed, 46 insertions(+)
> 
> diff --git a/drivers/gpu/hsa/radeon/kfd_chardev.c b/drivers/gpu/hsa/radeon/kfd_chardev.c
> index ddaf357..d6fa980 100644
> --- a/drivers/gpu/hsa/radeon/kfd_chardev.c
> +++ b/drivers/gpu/hsa/radeon/kfd_chardev.c
> @@ -28,6 +28,7 @@
>  #include <linux/slab.h>
>  #include <linux/uaccess.h>
>  #include <uapi/linux/kfd_ioctl.h>
> +#include <linux/time.h>
>  #include "kfd_priv.h"
>  #include "kfd_scheduler.h"
>  
> @@ -284,6 +285,38 @@ out:
>  	return err;
>  }
>  
> +static long
> +kfd_ioctl_get_clock_counters(struct file *filep, struct kfd_process *p, void __user *arg)
> +{
> +	struct kfd_ioctl_get_clock_counters_args args;
> +	struct kfd_dev *dev;
> +	struct timespec time;
> +
> +	if (copy_from_user(&args, arg, sizeof(args)))
> +		return -EFAULT;
> +
> +	dev = radeon_kfd_device_by_id(args.gpu_id);
> +	if (dev == NULL)
> +		return -EINVAL;
> +
> +	/* Reading GPU clock counter from KGD */
> +	args.gpu_clock_counter = kfd2kgd->get_gpu_clock_counter(dev->kgd);
> +
> +	/* No access to rdtsc. Using raw monotonic time */
> +	getrawmonotonic(&time);
> +	args.cpu_clock_counter = time.tv_nsec;

Is the GPU clock counter monotonic too ? Even after GPU reset (hard reset
included) what could go wrong if it rolls back ?

> +
> +	get_monotonic_boottime(&time);
> +	args.system_clock_counter = time.tv_nsec;
> +
> +	/* Since the counter is in nano-seconds we use 1GHz frequency */
> +	args.system_clock_freq = 1000000000;
> +
> +	if (copy_to_user(arg, &args, sizeof(args)))
> +		return -EFAULT;
> +
> +	return 0;
> +}
>  
>  static long
>  kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
> @@ -312,6 +345,10 @@ kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
>  		err = kfd_ioctl_set_memory_policy(filep, process, (void __user *)arg);
>  		break;
>  
> +	case KFD_IOC_GET_CLOCK_COUNTERS:
> +		err = kfd_ioctl_get_clock_counters(filep, process, (void __user *)arg);
> +		break;
> +
>  	default:
>  		dev_err(kfd_device,
>  			"unknown ioctl cmd 0x%x, arg 0x%lx)\n",
> diff --git a/include/uapi/linux/kfd_ioctl.h b/include/uapi/linux/kfd_ioctl.h
> index 928e628..5b9517e 100644
> --- a/include/uapi/linux/kfd_ioctl.h
> +++ b/include/uapi/linux/kfd_ioctl.h
> @@ -70,12 +70,21 @@ struct kfd_ioctl_set_memory_policy_args {
>  	uint64_t alternate_aperture_size;	/* to KFD */
>  };
>  
> +struct kfd_ioctl_get_clock_counters_args {
> +	uint32_t gpu_id;		/* to KFD */
> +	uint64_t gpu_clock_counter;	/* from KFD */
> +	uint64_t cpu_clock_counter;	/* from KFD */
> +	uint64_t system_clock_counter;	/* from KFD */
> +	uint64_t system_clock_freq;	/* from KFD */
> +};
> +
>  #define KFD_IOC_MAGIC 'K'
>  
>  #define KFD_IOC_GET_VERSION	_IOR(KFD_IOC_MAGIC, 1, struct kfd_ioctl_get_version_args)
>  #define KFD_IOC_CREATE_QUEUE	_IOWR(KFD_IOC_MAGIC, 2, struct kfd_ioctl_create_queue_args)
>  #define KFD_IOC_DESTROY_QUEUE	_IOWR(KFD_IOC_MAGIC, 3, struct kfd_ioctl_destroy_queue_args)
>  #define KFD_IOC_SET_MEMORY_POLICY	_IOW(KFD_IOC_MAGIC, 4, struct kfd_ioctl_set_memory_policy_args)
> +#define KFD_IOC_GET_CLOCK_COUNTERS	_IOWR(KFD_IOC_MAGIC, 5, struct kfd_ioctl_get_clock_counters_args)
>  
>  #pragma pack(pop)
>  
> -- 
> 1.9.1
> 

  reply	other threads:[~2014-07-11 20:35 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-10 21:53 [PATCH 29/83] hsa/radeon: Fix memory size allocated for HPD Oded Gabbay
2014-07-10 21:53 ` [PATCH 30/83] hsa/radeon: Fix list of supported devices Oded Gabbay
2014-07-10 21:53 ` [PATCH 31/83] drm/radeon: extending kfd-kgd interface Oded Gabbay
2014-07-10 21:53 ` [PATCH 32/83] hsa/radeon: implementing IOCTL for clock counters Oded Gabbay
2014-07-11 20:34   ` Jerome Glisse [this message]
2014-07-10 21:53 ` [PATCH 33/83] hsa/radeon: Fix coding style in cik_int.h Oded Gabbay
2014-07-10 21:53 ` [PATCH 34/83] drm/radeon: adding synchronization for GRBM GFX Oded Gabbay
2014-07-10 21:53 ` [PATCH 35/83] hsa/radeon: Print ioctl commnad only in debug mode Oded Gabbay
2014-07-10 21:53 ` [PATCH 36/83] hsa/radeon: fixing clock counters bug Oded Gabbay
2014-07-10 21:53 ` [PATCH 37/83] hsa/radeon: Print ISR info only in debug mode Oded Gabbay
2014-07-10 21:53 ` [PATCH 38/83] hsa/radeon: Workaround for a bug in amd_iommu Oded Gabbay
2014-07-11  8:42   ` Joerg Roedel
2014-07-10 21:53 ` [PATCH 39/83] drm/radeon: Extending kfd interface Oded Gabbay
2014-07-10 21:53 ` [PATCH 40/83] hsa/radeon: Adding max clock speeds to topology Oded Gabbay
2014-07-10 21:53 ` [PATCH 41/83] hsa/radeon: Alternating the source of max clock Oded Gabbay
2014-07-10 21:53 ` [PATCH 42/83] hsa/radeon: 32-bit processes support Oded Gabbay
2014-07-10 21:53 ` [PATCH 43/83] hsa/radeon: NULL pointer dereference bug workaround Oded Gabbay
2014-07-10 21:54 ` [PATCH 44/83] hsa/radeon: HSA64/HSA32 modes support Oded Gabbay
2014-07-11 20:41   ` Jerome Glisse
2014-07-10 21:54 ` [PATCH 45/83] hsa/radeon: debugging print statements Oded Gabbay
2014-07-10 21:54 ` [PATCH 46/83] hsa/radeon: Add queue and hw_pointer_store modules Oded Gabbay
2014-07-10 21:54 ` [PATCH 47/83] hsa/radeon: Add support allocating kernel doorbells Oded Gabbay
2014-07-10 21:54 ` [PATCH 48/83] hsa/radeon: Add mqd_manager module Oded Gabbay
2014-07-10 21:54 ` [PATCH 49/83] hsa/radeon: Add kernel queue support for KFD Oded Gabbay
2014-07-10 21:54 ` [PATCH 50/83] hsa/radeon: Add module parameter of scheduling policy Oded Gabbay
2014-07-10 21:54 ` [PATCH 51/83] hsa/radeon: Add packet manager module Oded Gabbay
2014-07-10 21:54 ` [PATCH 52/83] hsa/radeon: Add process queue " Oded Gabbay
2014-07-10 21:54 ` [PATCH 53/83] hsa/radeon: Add device " Oded Gabbay
2014-07-10 21:54 ` [PATCH 54/83] hsa/radeon: Switch to new queue scheduler Oded Gabbay
2014-07-10 21:54 ` [PATCH 55/83] hsa/radeon: Add IOCTL for update queue Oded Gabbay
2014-07-10 21:54 ` [PATCH 56/83] hsa/radeon: Queue Management integration with Memory Management Oded Gabbay
2014-07-10 21:54 ` [PATCH 57/83] hsa/radeon: Eliminate warnings in compilation Oded Gabbay
2014-07-10 21:54 ` [PATCH 58/83] hsa/radeon: Various kernel styling fixes Oded Gabbay
2014-07-10 21:54 ` [PATCH 59/83] hsa/radeon: Exclusive access for perf. counters Oded Gabbay
2014-07-10 21:54 ` [PATCH 60/83] hsa/radeon: Rearrange structures in kfd_ioctl.h Oded Gabbay
2014-07-10 21:54 ` [PATCH 61/83] hsa/radeon: change another pr_info to pr_debug Oded Gabbay
2014-07-10 21:54 ` [PATCH 62/83] hsa/radeon: Fix timeout calculation in sync_with_hw Oded Gabbay
2014-07-10 21:54 ` [PATCH 63/83] hsa/radeon: Update module information and version Oded Gabbay
2014-07-10 21:54 ` [PATCH 64/83] hsa/radeon: update queue fault handling Oded Gabbay
2014-07-10 21:54 ` [PATCH 65/83] hsa/radeon: fixing a bug to support 32b processes Oded Gabbay
2014-07-10 21:54 ` [PATCH 66/83] hsa/radeon: Fix number of pipes per ME Oded Gabbay
2014-07-10 21:54 ` [PATCH 67/83] hsa/radeon: Removing hw pointer store module Oded Gabbay
2014-07-10 21:54 ` [PATCH 68/83] hsa/radeon: Update module version to 0.6.0 Oded Gabbay
2014-07-10 21:54 ` [PATCH 69/83] hsa/radeon: Fix initialization of sh_mem registers Oded Gabbay
2014-07-10 21:54 ` [PATCH 70/83] hsa/radeon: Fix compilation warnings Oded Gabbay
2014-07-10 21:54 ` [PATCH 71/83] hsa/radeon: Remove old scheduler code Oded Gabbay
2014-07-10 21:54 ` [PATCH 72/83] hsa/radeon: Static analysis (smatch) fixes Oded Gabbay
2014-07-10 21:54 ` [PATCH 73/83] hsa/radeon: Adding qcm fence return status Oded Gabbay
2014-07-10 21:54 ` [PATCH 74/83] hsa/radeon: Adding some error messages Oded Gabbay
2014-07-10 21:54 ` [PATCH 75/83] hsa/radeon: Fixing minor issues with kernel queues (DIQ) Oded Gabbay
2014-07-10 21:54 ` [PATCH 76/83] hsa/radeon: Check oversubscription before destroying runlist Oded Gabbay
2014-07-10 21:54 ` [PATCH 77/83] hsa/radeon: Add local memory to topology Oded Gabbay
2014-07-10 21:54 ` [PATCH 78/83] hsa/radeon: Don't verify cksum when parsing CRAT table Oded Gabbay
2014-07-10 21:54 ` [PATCH 79/83] hsa/radeon: Update module version to 0.6.1 Oded Gabbay
2014-07-10 21:54 ` [PATCH 80/83] drm/radeon: Add register access functions to kfd2kgd interface Oded Gabbay
2014-07-10 21:54 ` [PATCH 81/83] hsa/radeon: Eliminating all direct register accesses Oded Gabbay
2014-07-10 21:54 ` [PATCH 82/83] drm/radeon: Remove lock functions from kfd2kgd interface Oded Gabbay
2014-07-10 21:54 ` [PATCH 83/83] hsa/radeon: Update module version to 0.6.2 Oded Gabbay

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140711203455.GR1870@gmail.com \
    --to=j.glisse@gmail.com \
    --cc=Alexey.Skidanov@amd.com \
    --cc=Andrew.Lewycky@amd.com \
    --cc=John.Bridgman@amd.com \
    --cc=airlied@linux.ie \
    --cc=alexander.deucher@amd.com \
    --cc=ben.goz@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=evgeny.pinchuk@amd.com \
    --cc=joro@8bytes.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oded.gabbay@amd.com \
    --cc=oded.gabbay@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox