@@ -619,13 +619,6 @@ static void soc15_program_aspm(struct amdgpu_device *adev)
619619 adev -> nbio .funcs -> program_aspm (adev );
620620}
621621
622- static void soc15_enable_doorbell_aperture (struct amdgpu_device * adev ,
623- bool enable )
624- {
625- adev -> nbio .funcs -> enable_doorbell_aperture (adev , enable );
626- adev -> nbio .funcs -> enable_doorbell_selfring_aperture (adev , enable );
627- }
628-
629622const struct amdgpu_ip_block_version vega10_common_ip_block =
630623{
631624 .type = AMD_IP_BLOCK_TYPE_COMMON ,
@@ -1125,6 +1118,11 @@ static int soc15_common_late_init(void *handle)
11251118 if (amdgpu_sriov_vf (adev ))
11261119 xgpu_ai_mailbox_get_irq (adev );
11271120
1121+ /* Enable selfring doorbell aperture late because doorbell BAR
1122+ * aperture will change if resize BAR successfully in gmc sw_init.
1123+ */
1124+ adev -> nbio .funcs -> enable_doorbell_selfring_aperture (adev , true);
1125+
11281126 return 0 ;
11291127}
11301128
@@ -1182,7 +1180,8 @@ static int soc15_common_hw_init(void *handle)
11821180 adev -> nbio .funcs -> remap_hdp_registers (adev );
11831181
11841182 /* enable the doorbell aperture */
1185- soc15_enable_doorbell_aperture (adev , true);
1183+ adev -> nbio .funcs -> enable_doorbell_aperture (adev , true);
1184+
11861185 /* HW doorbell routing policy: doorbell writing not
11871186 * in SDMA/IH/MM/ACV range will be routed to CP. So
11881187 * we need to init SDMA doorbell range prior
@@ -1198,8 +1197,14 @@ static int soc15_common_hw_fini(void *handle)
11981197{
11991198 struct amdgpu_device * adev = (struct amdgpu_device * )handle ;
12001199
1201- /* disable the doorbell aperture */
1202- soc15_enable_doorbell_aperture (adev , false);
1200+ /* Disable the doorbell aperture and selfring doorbell aperture
1201+ * separately in hw_fini because soc15_enable_doorbell_aperture
1202+ * has been removed and there is no need to delay disabling
1203+ * selfring doorbell.
1204+ */
1205+ adev -> nbio .funcs -> enable_doorbell_aperture (adev , false);
1206+ adev -> nbio .funcs -> enable_doorbell_selfring_aperture (adev , false);
1207+
12031208 if (amdgpu_sriov_vf (adev ))
12041209 xgpu_ai_mailbox_put_irq (adev );
12051210
0 commit comments