]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu: Get timestamp from system time
authorXiang Liu <xiang.liu@amd.com>
Tue, 11 Feb 2025 03:39:06 +0000 (11:39 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 17 Feb 2025 19:09:29 +0000 (14:09 -0500)
Get system local time and encode it to timestamp for CPER.

Signed-off-by: Xiang Liu <xiang.liu@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c

index e66016e02c1e14eb77c3c2d625659516070eadc1..6eb4e1bc3e7d95fd6bd4eb9ae5ec82361aa85b63 100644 (file)
@@ -36,6 +36,22 @@ static void __inc_entry_length(struct cper_hdr *hdr, uint32_t size)
        hdr->record_length += size;
 }
 
+static void amdgpu_cper_get_timestamp(struct cper_timestamp *timestamp)
+{
+       struct tm tm;
+       time64_t now = ktime_get_real_seconds();
+
+       time64_to_tm(now, 0, &tm);
+       timestamp->seconds = tm.tm_sec;
+       timestamp->minutes = tm.tm_min;
+       timestamp->hours = tm.tm_hour;
+       timestamp->flag = 0;
+       timestamp->day = tm.tm_mday;
+       timestamp->month = 1 + tm.tm_mon;
+       timestamp->year = (1900 + tm.tm_year) % 100;
+       timestamp->century = (1900 + tm.tm_year) / 100;
+}
+
 void amdgpu_cper_entry_fill_hdr(struct amdgpu_device *adev,
                                struct cper_hdr *hdr,
                                enum amdgpu_cper_type type,
@@ -52,7 +68,8 @@ void amdgpu_cper_entry_fill_hdr(struct amdgpu_device *adev,
        hdr->valid_bits.platform_id     = 1;
        hdr->valid_bits.partition_id    = 1;
        hdr->valid_bits.timestamp       = 1;
-       /*TODO need to initialize hdr->timestamp */
+
+       amdgpu_cper_get_timestamp(&hdr->timestamp);
 
        snprintf(hdr->record_id, 8, "%d", atomic_inc_return(&adev->cper.unique_id));
        snprintf(hdr->platform_id, 16, "0x%04X:0x%04X",