@@ -1073,6 +1073,57 @@ static ssize_t amdgpu_debugfs_gfxoff_write(struct file *f, const char __user *bu
10731073}
10741074
10751075
1076+ /**
1077+ * amdgpu_debugfs_regs_gfxoff_status - read gfxoff status
1078+ *
1079+ * @f: open file handle
1080+ * @buf: User buffer to store read data in
1081+ * @size: Number of bytes to read
1082+ * @pos: Offset to seek to
1083+ */
1084+ static ssize_t amdgpu_debugfs_gfxoff_read (struct file * f , char __user * buf ,
1085+ size_t size , loff_t * pos )
1086+ {
1087+ struct amdgpu_device * adev = file_inode (f )-> i_private ;
1088+ ssize_t result = 0 ;
1089+ int r ;
1090+
1091+ if (size & 0x3 || * pos & 0x3 )
1092+ return - EINVAL ;
1093+
1094+ r = pm_runtime_get_sync (adev -> ddev -> dev );
1095+ if (r < 0 )
1096+ return r ;
1097+
1098+ while (size ) {
1099+ uint32_t value ;
1100+
1101+ r = amdgpu_get_gfx_off_status (adev , & value );
1102+ if (r ) {
1103+ pm_runtime_mark_last_busy (adev -> ddev -> dev );
1104+ pm_runtime_put_autosuspend (adev -> ddev -> dev );
1105+ return r ;
1106+ }
1107+
1108+ r = put_user (value , (uint32_t * )buf );
1109+ if (r ) {
1110+ pm_runtime_mark_last_busy (adev -> ddev -> dev );
1111+ pm_runtime_put_autosuspend (adev -> ddev -> dev );
1112+ return r ;
1113+ }
1114+
1115+ result += 4 ;
1116+ buf += 4 ;
1117+ * pos += 4 ;
1118+ size -= 4 ;
1119+ }
1120+
1121+ pm_runtime_mark_last_busy (adev -> ddev -> dev );
1122+ pm_runtime_put_autosuspend (adev -> ddev -> dev );
1123+
1124+ return result ;
1125+ }
1126+
10761127static const struct file_operations amdgpu_debugfs_regs_fops = {
10771128 .owner = THIS_MODULE ,
10781129 .read = amdgpu_debugfs_regs_read ,
@@ -1123,7 +1174,9 @@ static const struct file_operations amdgpu_debugfs_gpr_fops = {
11231174
11241175static const struct file_operations amdgpu_debugfs_gfxoff_fops = {
11251176 .owner = THIS_MODULE ,
1177+ .read = amdgpu_debugfs_gfxoff_read ,
11261178 .write = amdgpu_debugfs_gfxoff_write ,
1179+ .llseek = default_llseek
11271180};
11281181
11291182static const struct file_operations * debugfs_regs [] = {
0 commit comments