Message ID | 20200522075846.30706-1-dinghao.liu@zju.edu.cn |
---|---|
State | Deferred |
Headers | show |
Series | dmaengine: tegra210-adma: Fix runtime PM imbalance on error | expand |
On 22/05/2020 08:58, Dinghao Liu wrote: > pm_runtime_get_sync() increments the runtime PM usage counter even > when it returns an error code. Thus a pairing decrement is needed on > the error handling path to keep the counter balanced. > > Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> > --- > drivers/dma/tegra210-adma.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c > index c4ce5dfb149b..803e1f4d5dac 100644 > --- a/drivers/dma/tegra210-adma.c > +++ b/drivers/dma/tegra210-adma.c > @@ -658,6 +658,7 @@ static int tegra_adma_alloc_chan_resources(struct dma_chan *dc) > > ret = pm_runtime_get_sync(tdc2dev(tdc)); > if (ret < 0) { > + pm_runtime_put_sync(tdc2dev(tdc)); > free_irq(tdc->irq, tdc); > return ret; > } > There is another place in probe that needs to be fixed as well. Can you correct this while you are at it? Thanks Jon
> > On 22/05/2020 08:58, Dinghao Liu wrote: > > pm_runtime_get_sync() increments the runtime PM usage counter even > > when it returns an error code. Thus a pairing decrement is needed on > > the error handling path to keep the counter balanced. > > > > Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> > > --- > > drivers/dma/tegra210-adma.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c > > index c4ce5dfb149b..803e1f4d5dac 100644 > > --- a/drivers/dma/tegra210-adma.c > > +++ b/drivers/dma/tegra210-adma.c > > @@ -658,6 +658,7 @@ static int tegra_adma_alloc_chan_resources(struct dma_chan *dc) > > > > ret = pm_runtime_get_sync(tdc2dev(tdc)); > > if (ret < 0) { > > + pm_runtime_put_sync(tdc2dev(tdc)); > > free_irq(tdc->irq, tdc); > > return ret; > > } > > > > > There is another place in probe that needs to be fixed as well. Can you > correct this while you are at it? > > Thanks > Jon > > -- > nvpublic Sure. I have sent a patch to fix PM imbalance in tegra_adma_probe(). Regards, Dinghao
On 22/05/2020 11:57, dinghao.liu@zju.edu.cn wrote: >> >> On 22/05/2020 08:58, Dinghao Liu wrote: >>> pm_runtime_get_sync() increments the runtime PM usage counter even >>> when it returns an error code. Thus a pairing decrement is needed on >>> the error handling path to keep the counter balanced. >>> >>> Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> >>> --- >>> drivers/dma/tegra210-adma.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c >>> index c4ce5dfb149b..803e1f4d5dac 100644 >>> --- a/drivers/dma/tegra210-adma.c >>> +++ b/drivers/dma/tegra210-adma.c >>> @@ -658,6 +658,7 @@ static int tegra_adma_alloc_chan_resources(struct dma_chan *dc) >>> >>> ret = pm_runtime_get_sync(tdc2dev(tdc)); >>> if (ret < 0) { >>> + pm_runtime_put_sync(tdc2dev(tdc)); >>> free_irq(tdc->irq, tdc); >>> return ret; >>> } >>> >> >> >> There is another place in probe that needs to be fixed as well. Can you >> correct this while you are at it? >> >> Thanks >> Jon >> >> -- >> nvpublic > > Sure. I have sent a patch to fix PM imbalance in tegra_adma_probe(). You should only send one patch to fix both instances as it is the same driver. It is impossible to figure out that two patches with the same $subject are different. Jon
> > On 22/05/2020 11:57, dinghao.liu@zju.edu.cn wrote: > >> > >> On 22/05/2020 08:58, Dinghao Liu wrote: > >>> pm_runtime_get_sync() increments the runtime PM usage counter even > >>> when it returns an error code. Thus a pairing decrement is needed on > >>> the error handling path to keep the counter balanced. > >>> > >>> Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> > >>> --- > >>> drivers/dma/tegra210-adma.c | 1 + > >>> 1 file changed, 1 insertion(+) > >>> > >>> diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c > >>> index c4ce5dfb149b..803e1f4d5dac 100644 > >>> --- a/drivers/dma/tegra210-adma.c > >>> +++ b/drivers/dma/tegra210-adma.c > >>> @@ -658,6 +658,7 @@ static int tegra_adma_alloc_chan_resources(struct dma_chan *dc) > >>> > >>> ret = pm_runtime_get_sync(tdc2dev(tdc)); > >>> if (ret < 0) { > >>> + pm_runtime_put_sync(tdc2dev(tdc)); > >>> free_irq(tdc->irq, tdc); > >>> return ret; > >>> } > >>> > >> > >> > >> There is another place in probe that needs to be fixed as well. Can you > >> correct this while you are at it? > >> > >> Thanks > >> Jon > >> > >> -- > >> nvpublic > > > > Sure. I have sent a patch to fix PM imbalance in tegra_adma_probe(). > > > You should only send one patch to fix both instances as it is the same > driver. It is impossible to figure out that two patches with the same > $subject are different. > > Jon > > -- > nvpublic OK. I will fix this in the next version of patch. Regards, Dinghao
diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c index c4ce5dfb149b..803e1f4d5dac 100644 --- a/drivers/dma/tegra210-adma.c +++ b/drivers/dma/tegra210-adma.c @@ -658,6 +658,7 @@ static int tegra_adma_alloc_chan_resources(struct dma_chan *dc) ret = pm_runtime_get_sync(tdc2dev(tdc)); if (ret < 0) { + pm_runtime_put_sync(tdc2dev(tdc)); free_irq(tdc->irq, tdc); return ret; }
pm_runtime_get_sync() increments the runtime PM usage counter even when it returns an error code. Thus a pairing decrement is needed on the error handling path to keep the counter balanced. Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn> --- drivers/dma/tegra210-adma.c | 1 + 1 file changed, 1 insertion(+)