* [PATCH] i2c: samsung: resume race fix @ 2012-11-07 10:28 Naveen Krishna Chatradhi [not found] ` <1352284106-24988-1-git-send-email-ch.naveen-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Naveen Krishna Chatradhi @ 2012-11-07 10:28 UTC (permalink / raw) To: linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA Cc: naveenkrishna.ch-Re5JQEeQqe8AvxtiuMwx3w, ben-linux-elnMNo+KYs3YtjvyW6yDsg, khali-PUYAD+kWke1g9hUCZPvPmw, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, olofj-F7+t8E8rja9g9hUCZPvPmw Don't unmark the device as suspended until after it's been re-setup. The main race would be w.r.t. an i2c driver that gets resumed at the same time (asyncronously), that is allowed to do a transfer since suspended is set to 0 before reinit, but really should have seen the -EIO return instead. Signed-off-by: Olof Johansson <olofj-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Signed-off-by: Naveen Krishna Chatradhi <ch.naveen-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> --- drivers/i2c/busses/i2c-s3c2410.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c index 3e0335f..dbaf920 100644 --- a/drivers/i2c/busses/i2c-s3c2410.c +++ b/drivers/i2c/busses/i2c-s3c2410.c @@ -1134,10 +1134,10 @@ static int s3c24xx_i2c_resume(struct device *dev) struct platform_device *pdev = to_platform_device(dev); struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev); - i2c->suspended = 0; clk_prepare_enable(i2c->clk); s3c24xx_i2c_init(i2c); clk_disable_unprepare(i2c->clk); + i2c->suspended = 0; return 0; } -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
[parent not found: <1352284106-24988-1-git-send-email-ch.naveen-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH] i2c: samsung: resume race fix [not found] ` <1352284106-24988-1-git-send-email-ch.naveen-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> @ 2012-11-07 10:44 ` Jean Delvare [not found] ` <20121107114437.0a563c7e-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org> 2013-01-24 13:27 ` Wolfram Sang 0 siblings, 2 replies; 8+ messages in thread From: Jean Delvare @ 2012-11-07 10:44 UTC (permalink / raw) To: Naveen Krishna Chatradhi Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, naveenkrishna.ch-Re5JQEeQqe8AvxtiuMwx3w, ben-linux-elnMNo+KYs3YtjvyW6yDsg, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, olofj-F7+t8E8rja9g9hUCZPvPmw On Wed, 07 Nov 2012 15:58:26 +0530, Naveen Krishna Chatradhi wrote: > Don't unmark the device as suspended until after it's been re-setup. > > The main race would be w.r.t. an i2c driver that gets resumed at the same > time (asyncronously), that is allowed to do a transfer since suspended > is set to 0 before reinit, but really should have seen the -EIO return > instead. I thought that the suspend order was children first and the resume order was parent first? If this can really happen then I am afraid this is an issue for more than just i2c-s3c2410. The proposed solution is also not really satisfactory, as the i2c client will certainly still fail to resume properly (the only improvement is that now the failure is no longer silent.) > > Signed-off-by: Olof Johansson <olofj-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > Signed-off-by: Naveen Krishna Chatradhi <ch.naveen-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> > --- > drivers/i2c/busses/i2c-s3c2410.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c > index 3e0335f..dbaf920 100644 > --- a/drivers/i2c/busses/i2c-s3c2410.c > +++ b/drivers/i2c/busses/i2c-s3c2410.c > @@ -1134,10 +1134,10 @@ static int s3c24xx_i2c_resume(struct device *dev) > struct platform_device *pdev = to_platform_device(dev); > struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev); > > - i2c->suspended = 0; > clk_prepare_enable(i2c->clk); > s3c24xx_i2c_init(i2c); > clk_disable_unprepare(i2c->clk); > + i2c->suspended = 0; > > return 0; > } Acked-by: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org> (Not perfect but still better than before.) -- Jean Delvare ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <20121107114437.0a563c7e-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>]
* Re: [PATCH] i2c: samsung: resume race fix [not found] ` <20121107114437.0a563c7e-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org> @ 2013-01-07 12:05 ` Naveen Krishna Ch [not found] ` <CAHfPSqCQ9e3VR3En+hQGWVOt0RRGsmHzHTFvBF+h2-rEX5oXhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Naveen Krishna Ch @ 2013-01-07 12:05 UTC (permalink / raw) To: Jean Delvare Cc: Naveen Krishna Chatradhi, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, ben-linux-elnMNo+KYs3YtjvyW6yDsg, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, olofj-F7+t8E8rja9g9hUCZPvPmw On 7 November 2012 16:14, Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org> wrote: > On Wed, 07 Nov 2012 15:58:26 +0530, Naveen Krishna Chatradhi wrote: >> Don't unmark the device as suspended until after it's been re-setup. >> >> The main race would be w.r.t. an i2c driver that gets resumed at the same >> time (asyncronously), that is allowed to do a transfer since suspended >> is set to 0 before reinit, but really should have seen the -EIO return >> instead. > > I thought that the suspend order was children first and the resume > order was parent first? > > If this can really happen then I am afraid this is an issue for more > than just i2c-s3c2410. The proposed solution is also not really > satisfactory, as the i2c client will certainly still fail to resume > properly (the only improvement is that now the failure is no longer > silent.) > >> >> Signed-off-by: Olof Johansson <olofj-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> >> Signed-off-by: Naveen Krishna Chatradhi <ch.naveen-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> >> --- >> drivers/i2c/busses/i2c-s3c2410.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c >> index 3e0335f..dbaf920 100644 >> --- a/drivers/i2c/busses/i2c-s3c2410.c >> +++ b/drivers/i2c/busses/i2c-s3c2410.c >> @@ -1134,10 +1134,10 @@ static int s3c24xx_i2c_resume(struct device *dev) >> struct platform_device *pdev = to_platform_device(dev); >> struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev); >> >> - i2c->suspended = 0; >> clk_prepare_enable(i2c->clk); >> s3c24xx_i2c_init(i2c); >> clk_disable_unprepare(i2c->clk); >> + i2c->suspended = 0; >> >> return 0; >> } > > Acked-by: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org> I don't see this patch landed any where in linux-i2c tree, Though it was acked. Was it missed or should i be doing something for this to be merged ?? > > (Not perfect but still better than before.) > > -- > Jean Delvare -- Shine bright, (: Nav :) ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <CAHfPSqCQ9e3VR3En+hQGWVOt0RRGsmHzHTFvBF+h2-rEX5oXhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH] i2c: samsung: resume race fix [not found] ` <CAHfPSqCQ9e3VR3En+hQGWVOt0RRGsmHzHTFvBF+h2-rEX5oXhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2013-01-07 12:25 ` Jean Delvare 0 siblings, 0 replies; 8+ messages in thread From: Jean Delvare @ 2013-01-07 12:25 UTC (permalink / raw) To: Naveen Krishna Ch, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ Cc: Naveen Krishna Chatradhi, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, ben-linux-elnMNo+KYs3YtjvyW6yDsg, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, olofj-F7+t8E8rja9g9hUCZPvPmw On Mon, 7 Jan 2013 17:35:25 +0530, Naveen Krishna Ch wrote: > On 7 November 2012 16:14, Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org> wrote: > > On Wed, 07 Nov 2012 15:58:26 +0530, Naveen Krishna Chatradhi wrote: > >> Don't unmark the device as suspended until after it's been re-setup. > >> > >> The main race would be w.r.t. an i2c driver that gets resumed at the same > >> time (asyncronously), that is allowed to do a transfer since suspended > >> is set to 0 before reinit, but really should have seen the -EIO return > >> instead. > >> > >> Signed-off-by: Olof Johansson <olofj-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> > >> Signed-off-by: Naveen Krishna Chatradhi <ch.naveen-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> > >> --- > >> drivers/i2c/busses/i2c-s3c2410.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c > >> index 3e0335f..dbaf920 100644 > >> --- a/drivers/i2c/busses/i2c-s3c2410.c > >> +++ b/drivers/i2c/busses/i2c-s3c2410.c > >> @@ -1134,10 +1134,10 @@ static int s3c24xx_i2c_resume(struct device *dev) > >> struct platform_device *pdev = to_platform_device(dev); > >> struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev); > >> > >> - i2c->suspended = 0; > >> clk_prepare_enable(i2c->clk); > >> s3c24xx_i2c_init(i2c); > >> clk_disable_unprepare(i2c->clk); > >> + i2c->suspended = 0; > >> > >> return 0; > >> } > > > > Acked-by: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org> > I don't see this patch landed any where in linux-i2c tree, Though it was acked. > Was it missed or should i be doing something for this to be merged ?? Nothing needed from your side AFAIK, Wolfram should pick patches when I ack them, maybe this one was simply overlooked. -- Jean Delvare ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] i2c: samsung: resume race fix 2012-11-07 10:44 ` Jean Delvare [not found] ` <20121107114437.0a563c7e-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org> @ 2013-01-24 13:27 ` Wolfram Sang 2013-01-24 16:41 ` Olof Johansson [not found] ` <20130124132759.GH12933-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 1 sibling, 2 replies; 8+ messages in thread From: Wolfram Sang @ 2013-01-24 13:27 UTC (permalink / raw) To: Jean Delvare Cc: Naveen Krishna Chatradhi, linux-i2c, linux-samsung-soc, naveenkrishna.ch, ben-linux, linux-arm-kernel, olofj [-- Attachment #1: Type: text/plain, Size: 790 bytes --] On Wed, Nov 07, 2012 at 11:44:37AM +0100, Jean Delvare wrote: > On Wed, 07 Nov 2012 15:58:26 +0530, Naveen Krishna Chatradhi wrote: > > Don't unmark the device as suspended until after it's been re-setup. > > > > The main race would be w.r.t. an i2c driver that gets resumed at the same > > time (asyncronously), that is allowed to do a transfer since suspended > > is set to 0 before reinit, but really should have seen the -EIO return > > instead. > > I thought that the suspend order was children first and the resume > order was parent first? Same here, why does it not work this way? Regards, Wolfram -- Pengutronix e.K. | Wolfram Sang | Industrial Linux Solutions | http://www.pengutronix.de/ | [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] i2c: samsung: resume race fix 2013-01-24 13:27 ` Wolfram Sang @ 2013-01-24 16:41 ` Olof Johansson [not found] ` <CALiw-2F7tG9ogDHj4Yf47T47rBn6mAiH2XvK8jpWB1a3OhNJBQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> [not found] ` <20130124132759.GH12933-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 1 sibling, 1 reply; 8+ messages in thread From: Olof Johansson @ 2013-01-24 16:41 UTC (permalink / raw) To: Wolfram Sang Cc: linux-samsung-soc, linux-i2c, ben-linux, Jean Delvare, naveenkrishna.ch, Naveen Krishna Chatradhi, linux-arm-kernel [-- Attachment #1.1: Type: text/plain, Size: 1405 bytes --] 2013/1/24 Wolfram Sang <w.sang@pengutronix.de> > On Wed, Nov 07, 2012 at 11:44:37AM +0100, Jean Delvare wrote: > > On Wed, 07 Nov 2012 15:58:26 +0530, Naveen Krishna Chatradhi wrote: > > > Don't unmark the device as suspended until after it's been re-setup. > > > > > > The main race would be w.r.t. an i2c driver that gets resumed at the > same > > > time (asyncronously), that is allowed to do a transfer since suspended > > > is set to 0 before reinit, but really should have seen the -EIO return > > > instead. > > > > I thought that the suspend order was children first and the resume > > order was parent first? > > Same here, why does it not work this way? > Sorry for being quiet on this so far, I didn't notice the controversy until now. This is actually about half of what the original fix was (which I wrote, thus my signed-off-by). The original one was related to us having the GPIO handshake for a shared bus (see separate discussions on how that should be upstreamed, and the work on that). For reference, that patch is at: https://gerrit.chromium.org/gerrit/#/c/28126/1/drivers/i2c/busses/i2c-s3c2410.c . So, I'm not sure that this patch is really needed. The significant part of the original one was the move of our internal s3c24xx_i2c_dt_gpio_free() below setting suspended = 1. Upstream implementation of the same functionality will be implemented differently, most likely. -Olof [-- Attachment #1.2: Type: text/html, Size: 1972 bytes --] [-- Attachment #2: Type: text/plain, Size: 176 bytes --] _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <CALiw-2F7tG9ogDHj4Yf47T47rBn6mAiH2XvK8jpWB1a3OhNJBQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH] i2c: samsung: resume race fix [not found] ` <CALiw-2F7tG9ogDHj4Yf47T47rBn6mAiH2XvK8jpWB1a3OhNJBQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2013-01-24 16:44 ` Wolfram Sang 0 siblings, 0 replies; 8+ messages in thread From: Wolfram Sang @ 2013-01-24 16:44 UTC (permalink / raw) To: Olof Johansson Cc: Jean Delvare, Naveen Krishna Chatradhi, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, naveenkrishna.ch-Re5JQEeQqe8AvxtiuMwx3w, ben-linux-elnMNo+KYs3YtjvyW6yDsg, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r [-- Attachment #1: Type: text/plain, Size: 337 bytes --] > below setting suspended = 1. Upstream implementation of the same > functionality will be implemented differently, most likely. Thanks, so I'll discard this patch. -- Pengutronix e.K. | Wolfram Sang | Industrial Linux Solutions | http://www.pengutronix.de/ | [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <20130124132759.GH12933-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>]
* Re: [PATCH] i2c: samsung: resume race fix [not found] ` <20130124132759.GH12933-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> @ 2013-01-24 16:42 ` Olof Johansson 0 siblings, 0 replies; 8+ messages in thread From: Olof Johansson @ 2013-01-24 16:42 UTC (permalink / raw) To: Wolfram Sang Cc: Jean Delvare, Naveen Krishna Chatradhi, linux-i2c-u79uwXL29TY76Z2rM5mHXA, linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, naveenkrishna.ch-Re5JQEeQqe8AvxtiuMwx3w, ben-linux-elnMNo+KYs3YtjvyW6yDsg, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r [Silly gmail defaulting to html the first time around, sorry for the re-send to those not on lists] 2013/1/24 Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>: > On Wed, Nov 07, 2012 at 11:44:37AM +0100, Jean Delvare wrote: >> On Wed, 07 Nov 2012 15:58:26 +0530, Naveen Krishna Chatradhi wrote: >> > Don't unmark the device as suspended until after it's been re-setup. >> > >> > The main race would be w.r.t. an i2c driver that gets resumed at the same >> > time (asyncronously), that is allowed to do a transfer since suspended >> > is set to 0 before reinit, but really should have seen the -EIO return >> > instead. >> >> I thought that the suspend order was children first and the resume >> order was parent first? > > Same here, why does it not work this way? Sorry for being quiet on this so far, I didn't notice the controversy until now. This is actually about half of what the original fix was (which I wrote, thus my signed-off-by). The original one was related to us having the GPIO handshake for a shared bus (see separate discussions on how that should be upstreamed, and the work on that). For reference, that patch is at: https://gerrit.chromium.org/gerrit/#/c/28126/1/drivers/i2c/busses/i2c-s3c2410.c. So, I'm not sure that this patch is really needed. The significant part of the original one was the move of our internal s3c24xx_i2c_dt_gpio_free() below setting suspended = 1. Upstream implementation of the same functionality will be implemented differently, most likely. -Olof ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-01-24 16:44 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-11-07 10:28 [PATCH] i2c: samsung: resume race fix Naveen Krishna Chatradhi [not found] ` <1352284106-24988-1-git-send-email-ch.naveen-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2012-11-07 10:44 ` Jean Delvare [not found] ` <20121107114437.0a563c7e-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org> 2013-01-07 12:05 ` Naveen Krishna Ch [not found] ` <CAHfPSqCQ9e3VR3En+hQGWVOt0RRGsmHzHTFvBF+h2-rEX5oXhQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-01-07 12:25 ` Jean Delvare 2013-01-24 13:27 ` Wolfram Sang 2013-01-24 16:41 ` Olof Johansson [not found] ` <CALiw-2F7tG9ogDHj4Yf47T47rBn6mAiH2XvK8jpWB1a3OhNJBQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-01-24 16:44 ` Wolfram Sang [not found] ` <20130124132759.GH12933-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> 2013-01-24 16:42 ` Olof Johansson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).