diff options
author | Xiang Liu <xiang.liu@amd.com> | 2025-02-11 11:39:06 +0800 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2025-02-17 14:09:29 -0500 |
commit | b3060f5bea5a0e1dc932cb70f04a7750320c74ea (patch) | |
tree | 86773b7d49b62bb35eacaa2db1c6e664dda7da6b /drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c | |
parent | f3e10e1a0c5a052d9e72cc18500b51d27fdf0eb4 (diff) | |
download | linux-b3060f5bea5a0e1dc932cb70f04a7750320c74ea.tar.gz linux-b3060f5bea5a0e1dc932cb70f04a7750320c74ea.tar.bz2 linux-b3060f5bea5a0e1dc932cb70f04a7750320c74ea.zip |
drm/amdgpu: Get timestamp from system time
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>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c index e66016e02c1e..6eb4e1bc3e7d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c @@ -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", |