Messages in this thread | | | Date | Mon, 19 Feb 2024 11:05:29 +0200 | From | Raag Jadav <> | Subject | Re: [PATCH v4 1/4] pwm: dwc: Fix PM regression |
| |
On Mon, Feb 19, 2024 at 08:22:15AM +0100, Uwe Kleine-König wrote: > Hello Raag, > > On Mon, Feb 19, 2024 at 09:08:32AM +0530, Raag Jadav wrote: > > While preparing dwc driver for devm_pwmchip_alloc() usage, commit > > df41cd8bbcad ("pwm: dwc: Prepare removing pwm_chip from driver data") > > modified ->suspend() handle to use the pwm_chip as driver_data for > > accessing struct dwc_pwm, but didn't modify ->resume() handle with > > relevant changes. This results into illegal memory access during > > device wakeup and causes a PM regression. > > > > Fix this by correctly accessing struct dwc_pwm in ->resume() handle. > > > > Fixes: df41cd8bbcad ("pwm: dwc: Prepare removing pwm_chip from driver data") > > Signed-off-by: Raag Jadav <raag.jadav@intel.com> > > --- > > drivers/pwm/pwm-dwc.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/pwm/pwm-dwc.c b/drivers/pwm/pwm-dwc.c > > index 8ca1c20a6aaf..c0e586688e57 100644 > > --- a/drivers/pwm/pwm-dwc.c > > +++ b/drivers/pwm/pwm-dwc.c > > @@ -95,7 +95,8 @@ static int dwc_pwm_suspend(struct device *dev) > > > > static int dwc_pwm_resume(struct device *dev) > > { > > - struct dwc_pwm *dwc = dev_get_drvdata(dev); > > + struct pwm_chip *chip = dev_get_drvdata(dev); > > + struct dwc_pwm *dwc = to_dwc_pwm(chip); > > int i; > > > > for (i = 0; i < DWC_TIMERS_TOTAL; i++) { > > If you're ok I'd squash this into df41cd8bbcad adding > > Thanks to Raag Jadav for providing a hunk of this patch that Uwe > missed during creation of this patch. > > to the commit log.
Works for me.
Raag
| |