mirror of https://gitee.com/openkylin/linux.git
drm/amdgpu/psp: move psp version specific function pointers to early_init
In case we need to use them for GPU reset prior initializing the asic. Fixes a crash if the driver attempts to reset the GPU at driver load time. Acked-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
2e26ccb119
commit
9d6fea5744
|
@ -38,18 +38,10 @@ static void psp_set_funcs(struct amdgpu_device *adev);
|
||||||
static int psp_early_init(void *handle)
|
static int psp_early_init(void *handle)
|
||||||
{
|
{
|
||||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||||
|
struct psp_context *psp = &adev->psp;
|
||||||
|
|
||||||
psp_set_funcs(adev);
|
psp_set_funcs(adev);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int psp_sw_init(void *handle)
|
|
||||||
{
|
|
||||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
|
||||||
struct psp_context *psp = &adev->psp;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
switch (adev->asic_type) {
|
switch (adev->asic_type) {
|
||||||
case CHIP_VEGA10:
|
case CHIP_VEGA10:
|
||||||
case CHIP_VEGA12:
|
case CHIP_VEGA12:
|
||||||
|
@ -67,6 +59,15 @@ static int psp_sw_init(void *handle)
|
||||||
|
|
||||||
psp->adev = adev;
|
psp->adev = adev;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int psp_sw_init(void *handle)
|
||||||
|
{
|
||||||
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||||
|
struct psp_context *psp = &adev->psp;
|
||||||
|
int ret;
|
||||||
|
|
||||||
ret = psp_init_microcode(psp);
|
ret = psp_init_microcode(psp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
DRM_ERROR("Failed to load psp firmware!\n");
|
DRM_ERROR("Failed to load psp firmware!\n");
|
||||||
|
|
Loading…
Reference in New Issue