Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amdgpu: Move jpeg ras block init to ras sw_init

Initialize jpeg ras block only when jpeg ip block
supports ras features. Driver queries ras capabilities
after early_init, ras block init needs to be moved to
sw_int.

Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Stanley Yang <Stanley.Yang@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Hawking Zhang and committed by
Alex Deucher
5640e06e c69d5139

+28 -15
+19 -10
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
··· 236 236 return 0; 237 237 } 238 238 239 - void jpeg_set_ras_funcs(struct amdgpu_device *adev) 239 + int amdgpu_jpeg_ras_sw_init(struct amdgpu_device *adev) 240 240 { 241 + int err; 242 + struct amdgpu_jpeg_ras *ras; 243 + 241 244 if (!adev->jpeg.ras) 242 - return; 245 + return 0; 243 246 244 - amdgpu_ras_register_ras_block(adev, &adev->jpeg.ras->ras_block); 247 + ras = adev->jpeg.ras; 248 + err = amdgpu_ras_register_ras_block(adev, &ras->ras_block); 249 + if (err) { 250 + dev_err(adev->dev, "Failed to register jpeg ras block!\n"); 251 + return err; 252 + } 245 253 246 - strcpy(adev->jpeg.ras->ras_block.ras_comm.name, "jpeg"); 247 - adev->jpeg.ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__JPEG; 248 - adev->jpeg.ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__POISON; 249 - adev->jpeg.ras_if = &adev->jpeg.ras->ras_block.ras_comm; 254 + strcpy(ras->ras_block.ras_comm.name, "jpeg"); 255 + ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__JPEG; 256 + ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__POISON; 257 + adev->jpeg.ras_if = &ras->ras_block.ras_comm; 250 258 251 - /* If don't define special ras_late_init function, use default ras_late_init */ 252 - if (!adev->jpeg.ras->ras_block.ras_late_init) 253 - adev->jpeg.ras->ras_block.ras_late_init = amdgpu_ras_block_late_init; 259 + if (!ras->ras_block.ras_late_init) 260 + ras->ras_block.ras_late_init = amdgpu_ras_block_late_init; 261 + 262 + return 0; 254 263 }
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.h
··· 72 72 int amdgpu_jpeg_process_poison_irq(struct amdgpu_device *adev, 73 73 struct amdgpu_irq_src *source, 74 74 struct amdgpu_iv_entry *entry); 75 - void jpeg_set_ras_funcs(struct amdgpu_device *adev); 75 + int amdgpu_jpeg_ras_sw_init(struct amdgpu_device *adev); 76 76 77 77 #endif /*__AMDGPU_JPEG_H__*/
+4 -2
drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c
··· 138 138 adev->jpeg.inst[i].external.jpeg_pitch = SOC15_REG_OFFSET(JPEG, i, mmUVD_JPEG_PITCH); 139 139 } 140 140 141 + r = amdgpu_jpeg_ras_sw_init(adev); 142 + if (r) 143 + return r; 144 + 141 145 return 0; 142 146 } 143 147 ··· 810 806 default: 811 807 break; 812 808 } 813 - 814 - jpeg_set_ras_funcs(adev); 815 809 }
+4 -2
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c
··· 113 113 adev->jpeg.internal.jpeg_pitch = regUVD_JPEG_PITCH_INTERNAL_OFFSET; 114 114 adev->jpeg.inst->external.jpeg_pitch = SOC15_REG_OFFSET(JPEG, 0, regUVD_JPEG_PITCH); 115 115 116 + r = amdgpu_jpeg_ras_sw_init(adev); 117 + if (r) 118 + return r; 119 + 116 120 return 0; 117 121 } 118 122 ··· 689 685 default: 690 686 break; 691 687 } 692 - 693 - jpeg_set_ras_funcs(adev); 694 688 }