accel/habanalabs: add tsc clock sampling to clock sync info
authorHen Alon <halon@habana.ai>
Wed, 9 Aug 2023 14:29:41 +0000 (17:29 +0300)
committerOded Gabbay <ogabbay@kernel.org>
Mon, 9 Oct 2023 09:37:21 +0000 (12:37 +0300)
Add tsc clock to clock sync info, to enable using this clock for
sampling and sync it with device time.

Signed-off-by: Hen Alon <halon@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/accel/habanalabs/common/habanalabs_ioctl.c
include/uapi/drm/habanalabs_accel.h

index 8c3f1e2de2feb5355880671ecbb98e5f5d7325ac..8ef36effb95bc4071a5cceaaff3e68319040d71a 100644 (file)
@@ -17,6 +17,8 @@
 #include <linux/uaccess.h>
 #include <linux/vmalloc.h>
 
+#include <asm/msr.h>
+
 static u32 hl_debug_struct_size[HL_DEBUG_OP_TIMESTAMP + 1] = {
        [HL_DEBUG_OP_ETR] = sizeof(struct hl_debug_params_etr),
        [HL_DEBUG_OP_ETF] = sizeof(struct hl_debug_params_etf),
@@ -320,6 +322,7 @@ static int time_sync_info(struct hl_device *hdev, struct hl_info_args *args)
 
        time_sync.device_time = hdev->asic_funcs->get_device_time(hdev);
        time_sync.host_time = ktime_get_raw_ns();
+       time_sync.tsc_time = rdtsc();
 
        return copy_to_user(out, &time_sync,
                min((size_t) max_size, sizeof(time_sync))) ? -EFAULT : 0;
index e7893b082bf8cd280ab071ce86166a530953bfa7..dfe47db24ae61fc7f3d954c89060366a9605c74f 100644 (file)
@@ -991,6 +991,7 @@ struct hl_info_reset_count {
 struct hl_info_time_sync {
        __u64 device_time;
        __u64 host_time;
+       __u64 tsc_time;
 };
 
 /**