[PATCH] Revert "drm/radeon/si_dpm: Replace one-element array with flexible-array in struct SISLANDS_SMC_SWSTATE"
Deucher, Alexander
Alexander.Deucher at amd.com
Wed May 5 13:06:50 UTC 2021
[AMD Public Use]
> -----Original Message-----
> From: Gustavo A. R. Silva <gustavo at embeddedor.com>
> Sent: Tuesday, May 4, 2021 6:43 PM
> To: Deucher, Alexander <Alexander.Deucher at amd.com>; amd-
> gfx at lists.freedesktop.org
> Cc: Gustavo A . R . Silva <gustavoars at kernel.org>
> Subject: Re: [PATCH] Revert "drm/radeon/si_dpm: Replace one-element
> array with flexible-array in struct SISLANDS_SMC_SWSTATE"
>
> Hi,
>
> I thought it was this[1] the one causing problems[2].
They are both causing problems.
Alex
>
> --
> Gustavo
>
> [1]
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.k
> ernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%
> 2Fcommit%2F%3Fid%3D434fb1e7444a2efc3a4ebd950c7f771ebfcffa31&d
> ata=04%7C01%7Calexander.deucher%40amd.com%7C2e5ec39776404b9f1ad
> a08d90f4def14%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C6375
> 57649665013301%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiL
> CJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ItE
> aD0%2FcD8SZYTdHFEzLqhAkz4u40VJ3b8jXmnKubYc%3D&reserved=0
> [2]
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.
> kernel.org%2Fdri-devel%2F3eedbe78-1fbd-4763-a7f3-
> ac5665e76a4a%40xenosoft.de%2F&data=04%7C01%7Calexander.deuch
> er%40amd.com%7C2e5ec39776404b9f1ada08d90f4def14%7C3dd8961fe4884
> e608e11a82d994e183d%7C0%7C0%7C637557649665013301%7CUnknown%7C
> TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiL
> CJXVCI6Mn0%3D%7C1000&sdata=oNDZm9xHuOWbelrUrXYXPoyXLlk2dI
> kRH75O43AFNcI%3D&reserved=0
>
> On 5/4/21 13:42, Alex Deucher wrote:
> > This reverts commit 96e27e8d919e52f30ea6b717e3cb70faa0b102cd.
> >
> > This causes the SMU to fail to load the power state.
> >
> > Bug:
> > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitl
> > ab.freedesktop.org%2Fdrm%2Famd%2F-
> %2Fissues%2F1583&data=04%7C01%7C
> >
> alexander.deucher%40amd.com%7C2e5ec39776404b9f1ada08d90f4def14%7
> C3dd89
> >
> 61fe4884e608e11a82d994e183d%7C0%7C0%7C637557649665013301%7CUnkn
> own%7CT
> >
> WFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLC
> JXVCI
> >
> 6Mn0%3D%7C1000&sdata=zo7mfnO2t%2BtQgPxIquuDYIsROlkqECjdX0r
> JOPyklyc
> > %3D&reserved=0
> > Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> > Cc: Gustavo A. R. Silva <gustavoars at kernel.org>
> > ---
> > drivers/gpu/drm/radeon/si_dpm.c | 5 +++--
> > drivers/gpu/drm/radeon/sislands_smc.h | 10 +++++-----
> > 2 files changed, 8 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/radeon/si_dpm.c
> > b/drivers/gpu/drm/radeon/si_dpm.c index 918609551804..91bfc4762767
> > 100644
> > --- a/drivers/gpu/drm/radeon/si_dpm.c
> > +++ b/drivers/gpu/drm/radeon/si_dpm.c
> > @@ -5250,9 +5250,10 @@ static int si_upload_sw_state(struct
> radeon_device *rdev,
> > int ret;
> > u32 address = si_pi->state_table_start +
> > offsetof(SISLANDS_SMC_STATETABLE, driverState);
> > + u32 state_size = sizeof(SISLANDS_SMC_SWSTATE) +
> > + ((new_state->performance_level_count - 1) *
> > + sizeof(SISLANDS_SMC_HW_PERFORMANCE_LEVEL));
> > SISLANDS_SMC_SWSTATE *smc_state = &si_pi-
> >smc_statetable.driverState;
> > - size_t state_size = struct_size(smc_state, levels,
> > - new_state-
> >performance_level_count);
> >
> > memset(smc_state, 0, state_size);
> >
> > diff --git a/drivers/gpu/drm/radeon/sislands_smc.h
> > b/drivers/gpu/drm/radeon/sislands_smc.h
> > index fbd6589bdab9..966e3a556011 100644
> > --- a/drivers/gpu/drm/radeon/sislands_smc.h
> > +++ b/drivers/gpu/drm/radeon/sislands_smc.h
> > @@ -182,11 +182,11 @@ typedef struct
> SISLANDS_SMC_HW_PERFORMANCE_LEVEL
> > SISLANDS_SMC_HW_PERFORMANCE_LEV
> >
> > struct SISLANDS_SMC_SWSTATE
> > {
> > - uint8_t flags;
> > - uint8_t levelCount;
> > - uint8_t padding2;
> > - uint8_t padding3;
> > - SISLANDS_SMC_HW_PERFORMANCE_LEVEL levels[];
> > + uint8_t flags;
> > + uint8_t levelCount;
> > + uint8_t padding2;
> > + uint8_t padding3;
> > + SISLANDS_SMC_HW_PERFORMANCE_LEVEL levels[1];
> > };
> >
> > typedef struct SISLANDS_SMC_SWSTATE SISLANDS_SMC_SWSTATE;
> >
More information about the amd-gfx
mailing list