Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> On Wed, Jun 28, 2023 at 8:30 AM Yang Wang <kevinyang.wang@xxxxxxx> wrote: > > the smu driver_table is used for all types of smu > tables data transcation (e.g: PPtable, Metrics, i2c, Ecc..). > > it is necessary to hold this lock to avoiding data tampering > during the i2c read operation. > > Signed-off-by: Yang Wang <kevinyang.wang@xxxxxxx> > Reviewed-by: Lijo Lazar <lijo.lazar@xxxxxxx> > --- > drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c | 2 +- > drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c | 2 +- > drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 2 +- > drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c | 2 +- > drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 2 +- > drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c | 2 +- > 6 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c > index 9cd005131f56..3bb18396d2f9 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c > @@ -2113,7 +2113,6 @@ static int arcturus_i2c_xfer(struct i2c_adapter *i2c_adap, > } > mutex_lock(&adev->pm.mutex); > r = smu_cmn_update_table(smu, SMU_TABLE_I2C_COMMANDS, 0, req, true); > - mutex_unlock(&adev->pm.mutex); > if (r) > goto fail; > > @@ -2130,6 +2129,7 @@ static int arcturus_i2c_xfer(struct i2c_adapter *i2c_adap, > } > r = num_msgs; > fail: > + mutex_unlock(&adev->pm.mutex); > kfree(req); > return r; > } > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c > index c94d825a871b..95f6d821bacb 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c > @@ -3021,7 +3021,6 @@ static int navi10_i2c_xfer(struct i2c_adapter *i2c_adap, > } > mutex_lock(&adev->pm.mutex); > r = smu_cmn_update_table(smu, SMU_TABLE_I2C_COMMANDS, 0, req, true); > - mutex_unlock(&adev->pm.mutex); > if (r) > goto fail; > > @@ -3038,6 +3037,7 @@ static int navi10_i2c_xfer(struct i2c_adapter *i2c_adap, > } > r = num_msgs; > fail: > + mutex_unlock(&adev->pm.mutex); > kfree(req); > return r; > } > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c > index f7ed3e655e39..8fe2e1716da4 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c > @@ -3842,7 +3842,6 @@ static int sienna_cichlid_i2c_xfer(struct i2c_adapter *i2c_adap, > } > mutex_lock(&adev->pm.mutex); > r = smu_cmn_update_table(smu, SMU_TABLE_I2C_COMMANDS, 0, req, true); > - mutex_unlock(&adev->pm.mutex); > if (r) > goto fail; > > @@ -3859,6 +3858,7 @@ static int sienna_cichlid_i2c_xfer(struct i2c_adapter *i2c_adap, > } > r = num_msgs; > fail: > + mutex_unlock(&adev->pm.mutex); > kfree(req); > return r; > } > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c > index e80f122d8aec..ce50ef46e73f 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c > @@ -1525,7 +1525,6 @@ static int aldebaran_i2c_xfer(struct i2c_adapter *i2c_adap, > } > mutex_lock(&adev->pm.mutex); > r = smu_cmn_update_table(smu, SMU_TABLE_I2C_COMMANDS, 0, req, true); > - mutex_unlock(&adev->pm.mutex); > if (r) > goto fail; > > @@ -1542,6 +1541,7 @@ static int aldebaran_i2c_xfer(struct i2c_adapter *i2c_adap, > } > r = num_msgs; > fail: > + mutex_unlock(&adev->pm.mutex); > kfree(req); > return r; > } > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c > index 124287cbbff8..1d995f53aaab 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c > @@ -2320,7 +2320,6 @@ static int smu_v13_0_0_i2c_xfer(struct i2c_adapter *i2c_adap, > } > mutex_lock(&adev->pm.mutex); > r = smu_cmn_update_table(smu, SMU_TABLE_I2C_COMMANDS, 0, req, true); > - mutex_unlock(&adev->pm.mutex); > if (r) > goto fail; > > @@ -2337,6 +2336,7 @@ static int smu_v13_0_0_i2c_xfer(struct i2c_adapter *i2c_adap, > } > r = num_msgs; > fail: > + mutex_unlock(&adev->pm.mutex); > kfree(req); > return r; > } > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c > index 6ef12252beb5..1ac552142763 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c > @@ -1763,7 +1763,6 @@ static int smu_v13_0_6_i2c_xfer(struct i2c_adapter *i2c_adap, > } > mutex_lock(&adev->pm.mutex); > r = smu_v13_0_6_request_i2c_xfer(smu, req); > - mutex_unlock(&adev->pm.mutex); > if (r) > goto fail; > > @@ -1780,6 +1779,7 @@ static int smu_v13_0_6_i2c_xfer(struct i2c_adapter *i2c_adap, > } > r = num_msgs; > fail: > + mutex_unlock(&adev->pm.mutex); > kfree(req); > return r; > } > -- > 2.34.1 >