[Public] > -----Original Message----- > From: Lazar, Lijo <lijo.la...@amd.com> > Sent: Saturday, July 5, 2025 12:25 AM > To: amd-gfx@lists.freedesktop.org > Cc: Zhang, Hawking <hawking.zh...@amd.com>; Deucher, Alexander > <alexander.deuc...@amd.com> > Subject: [PATCH] drm/amdgpu: Use cached partition mode, if valid > > For current partition mode queries, return the mode cached in partition > manager > whenever it's valid. > > Signed-off-by: Lijo Lazar <lijo.la...@amd.com>
Acked-by: Alex Deucher <alexander.deuc...@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c > index c8fcafeb6864..c417f8689220 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c > @@ -218,15 +218,27 @@ int amdgpu_xcp_restore_partition_mode(struct > amdgpu_xcp_mgr *xcp_mgr) > return __amdgpu_xcp_switch_partition_mode(xcp_mgr, xcp_mgr->mode); } > > -int amdgpu_xcp_query_partition_mode(struct amdgpu_xcp_mgr *xcp_mgr, u32 > flags) > +static bool __amdgpu_xcp_is_cached_mode_valid(struct amdgpu_xcp_mgr > +*xcp_mgr) > { > - int mode; > + if (!xcp_mgr->funcs || !xcp_mgr->funcs->query_partition_mode) > + return true; > > if (!amdgpu_sriov_vf(xcp_mgr->adev) && > xcp_mgr->mode == AMDGPU_XCP_MODE_NONE) > - return xcp_mgr->mode; > + return true; > > - if (!xcp_mgr->funcs || !xcp_mgr->funcs->query_partition_mode) > + if (xcp_mgr->mode != AMDGPU_XCP_MODE_NONE && > + xcp_mgr->mode != AMDGPU_XCP_MODE_TRANS) > + return true; > + > + return false; > +} > + > +int amdgpu_xcp_query_partition_mode(struct amdgpu_xcp_mgr *xcp_mgr, u32 > +flags) { > + int mode; > + > + if (__amdgpu_xcp_is_cached_mode_valid(xcp_mgr)) > return xcp_mgr->mode; > > if (!(flags & AMDGPU_XCP_FL_LOCKED)) > -- > 2.49.0