From: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
To: Russell King <rmk+kernel-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
Sebastian Hesselbarth
<sebastian.hesselbarth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
"Mark A. Greer" <mgreer-luAo+O/VEmrlveNOaEYElw@public.gmane.org>,
"Ben Dooks (embedded platforms)"
<ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 9/9] I2C: mv64xxx: fix race between FSM/interrupt and process context
Date: Fri, 17 May 2013 11:51:51 +0200 [thread overview]
Message-ID: <20130517095149.GI17056@katana> (raw)
In-Reply-To: <E1Ud4xE-0004KB-2T-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org>
> @@ -271,12 +273,25 @@ mv64xxx_i2c_do_action(struct mv64xxx_i2c_data *drv_data)
> {
> switch(drv_data->action) {
> case MV64XXX_I2C_ACTION_SEND_RESTART:
> + /* We should only get here if we have further messages */
> + BUG_ON(drv_data->num_msgs == 0);
> +
...
> @@ -453,16 +463,20 @@ static int
> mv64xxx_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
> {
> struct mv64xxx_i2c_data *drv_data = i2c_get_adapdata(adap);
> - int i, rc;
> + int rc, ret = num;
>
> - for (i = 0; i < num; i++) {
> - rc = mv64xxx_i2c_execute_msg(drv_data, &msgs[i],
> - i == 0, i + 1 == num);
> - if (rc < 0)
> - return rc;
> - }
> + BUG_ON(drv_data->msgs != NULL);
Can't we handle this more gracefully than to halt the kernel? Like
WARN_ON and resetting the controller or disabling the bus or...
WARNING: multiple messages have this Message-ID (diff)
From: wsa@the-dreams.de (Wolfram Sang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 9/9] I2C: mv64xxx: fix race between FSM/interrupt and process context
Date: Fri, 17 May 2013 11:51:51 +0200 [thread overview]
Message-ID: <20130517095149.GI17056@katana> (raw)
In-Reply-To: <E1Ud4xE-0004KB-2T@rmk-PC.arm.linux.org.uk>
> @@ -271,12 +273,25 @@ mv64xxx_i2c_do_action(struct mv64xxx_i2c_data *drv_data)
> {
> switch(drv_data->action) {
> case MV64XXX_I2C_ACTION_SEND_RESTART:
> + /* We should only get here if we have further messages */
> + BUG_ON(drv_data->num_msgs == 0);
> +
...
> @@ -453,16 +463,20 @@ static int
> mv64xxx_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
> {
> struct mv64xxx_i2c_data *drv_data = i2c_get_adapdata(adap);
> - int i, rc;
> + int rc, ret = num;
>
> - for (i = 0; i < num; i++) {
> - rc = mv64xxx_i2c_execute_msg(drv_data, &msgs[i],
> - i == 0, i + 1 == num);
> - if (rc < 0)
> - return rc;
> - }
> + BUG_ON(drv_data->msgs != NULL);
Can't we handle this more gracefully than to halt the kernel? Like
WARN_ON and resetting the controller or disabling the bus or...
next prev parent reply other threads:[~2013-05-17 9:51 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-16 20:29 [PATCH 0/9] Fix Marvell mv63xxx I2C driver Russell King - ARM Linux
2013-05-16 20:29 ` Russell King - ARM Linux
2013-05-16 20:30 ` [PATCH 1/9] I2C: mv64xxx: work around signals causing I2C transactions to be aborted Russell King
2013-05-16 20:30 ` Russell King
[not found] ` <E1Ud4pH-0004JQ-Jq-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org>
2013-05-17 6:37 ` Jean-Francois Moine
2013-05-17 6:37 ` Jean-Francois Moine
2013-05-17 8:31 ` Russell King - ARM Linux
2013-05-17 8:31 ` Russell King - ARM Linux
2013-05-17 12:17 ` Wolfram Sang
2013-05-17 12:17 ` Wolfram Sang
2013-05-17 17:06 ` Mark A. Greer
2013-05-17 17:06 ` Mark A. Greer
2013-05-16 20:32 ` [PATCH 2/9] I2C: mv64xxx: use return value from mv64xxx_i2c_map_regs() Russell King
2013-05-16 20:32 ` Russell King
2013-05-16 20:33 ` [PATCH 3/9] I2C: mv64xxx: use devm_ioremap_resource() Russell King
2013-05-16 20:33 ` Russell King
[not found] ` <E1Ud4rN-0004Jc-CL-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org>
2013-05-17 9:23 ` Jean-Francois Moine
2013-05-17 9:23 ` Jean-Francois Moine
2013-05-17 9:34 ` Russell King - ARM Linux
2013-05-17 9:34 ` Russell King - ARM Linux
2013-05-16 20:34 ` [PATCH 4/9] I2C: mv64xxx: use devm_clk_get() to avoid missing clk_put() Russell King
2013-05-16 20:34 ` Russell King
2013-05-16 20:35 ` [PATCH 5/9] I2C: mv64xxx: use devm_kzalloc() Russell King
2013-05-16 20:35 ` Russell King
2013-05-16 20:36 ` [PATCH 6/9] I2C: mv64xxx: fix error handling for request_irq() Russell King
2013-05-16 20:36 ` Russell King
2013-05-16 20:37 ` [PATCH 7/9] I2C: mv64xxx: remove I2C_M_NOSTART code Russell King
2013-05-16 20:37 ` Russell King
[not found] ` <E1Ud4vH-0004Jz-F6-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org>
2013-05-22 19:05 ` Mark Brown
2013-05-22 19:05 ` Mark Brown
2013-05-16 20:38 ` [PATCH 8/9] I2C: mv64xxx: move mv64xxx_i2c_prepare_for_io() Russell King
2013-05-16 20:38 ` Russell King
2013-05-16 20:39 ` [PATCH 9/9] I2C: mv64xxx: fix race between FSM/interrupt and process context Russell King
2013-05-16 20:39 ` Russell King
[not found] ` <E1Ud4xE-0004KB-2T-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org>
2013-05-17 9:51 ` Wolfram Sang [this message]
2013-05-17 9:51 ` Wolfram Sang
2013-05-17 10:00 ` Russell King - ARM Linux
2013-05-17 10:00 ` Russell King - ARM Linux
[not found] ` <20130517100016.GB18614-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-05-17 12:15 ` Wolfram Sang
2013-05-17 12:15 ` Wolfram Sang
[not found] ` <20130516202921.GW18614-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2013-06-05 21:48 ` [PATCH 0/9] Fix Marvell mv63xxx I2C driver Wolfram Sang
2013-06-05 21:48 ` Wolfram Sang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130517095149.GI17056@katana \
--to=wsa-z923lk4zbo2bacvfa/9k2g@public.gmane.org \
--cc=ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org \
--cc=jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mgreer-luAo+O/VEmrlveNOaEYElw@public.gmane.org \
--cc=rmk+kernel-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=sebastian.hesselbarth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.