From: Greg KH <greg@kroah.com>
To: linux-kernel@vger.kernel.org, sensors@stimpy.netroedge.com
Subject: Re: [PATCH] I2C update for 2.6.9
Date: Tue, 19 Oct 2004 17:18:26 -0700 [thread overview]
Message-ID: <10982315062289@kroah.com> (raw)
In-Reply-To: <10982315061566@kroah.com>
ChangeSet 1.1939.9.8, 2004/09/29 16:14:12-07:00, johnpol@2ka.mipt.ru
[PATCH] w1: schedule_timeout() issues.
Need to set current state and check signals.
Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/w1/dscore.c | 13 ++++++++++---
drivers/w1/w1.c | 20 +++++++++++++++-----
drivers/w1/w1_family.c | 11 +++++++++--
drivers/w1/w1_int.c | 11 +++++++++--
4 files changed, 43 insertions(+), 12 deletions(-)
diff -Nru a/drivers/w1/dscore.c b/drivers/w1/dscore.c
--- a/drivers/w1/dscore.c 2004-10-19 16:54:19 -07:00
+++ b/drivers/w1/dscore.c 2004-10-19 16:54:19 -07:00
@@ -727,11 +727,18 @@
{
struct ds_device *dev;
- dev = usb_get_intfdata (intf);
- usb_set_intfdata (intf, NULL);
+ dev = usb_get_intfdata(intf);
+ usb_set_intfdata(intf, NULL);
- while(atomic_read(&dev->refcnt))
+ while (atomic_read(&dev->refcnt)) {
+ printk(KERN_INFO "Waiting for DS to become free: refcnt=%d.\n",
+ atomic_read(&dev->refcnt));
+ set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(HZ);
+
+ if (signal_pending(current))
+ flush_signals(current);
+ }
usb_put_dev(dev->udev);
kfree(dev);
diff -Nru a/drivers/w1/w1.c b/drivers/w1/w1.c
--- a/drivers/w1/w1.c 2004-10-19 16:54:19 -07:00
+++ b/drivers/w1/w1.c 2004-10-19 16:54:19 -07:00
@@ -449,8 +449,15 @@
dev_info(&sl->dev, "%s: detaching %s.\n", __func__, sl->name);
- while (atomic_read(&sl->refcnt))
- schedule_timeout(10);
+ while (atomic_read(&sl->refcnt)) {
+ printk(KERN_INFO "Waiting for %s to become free: refcnt=%d.\n",
+ sl->name, atomic_read(&sl->refcnt));
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(HZ);
+
+ if (signal_pending(current))
+ flush_signals(current);
+ }
sysfs_remove_bin_file (&sl->dev.kobj, &sl->attr_bin);
device_remove_file(&sl->dev, &sl->attr_name);
@@ -507,8 +514,8 @@
* All who don't sleep must send ID bit and COMPLEMENT ID bit.
* They actually are ANDed between all senders.
*/
- id_bit = w1_read_bit(dev);
- comp_bit = w1_read_bit(dev);
+ id_bit = w1_touch_bit(dev, 1);
+ comp_bit = w1_touch_bit(dev, 1);
if (id_bit && comp_bit)
break;
@@ -539,7 +546,10 @@
* and make all who don't have "search_bit" in "i"'th position
* in it's registration number sleep.
*/
- w1_write_bit(dev, search_bit);
+ if (dev->bus_master->touch_bit)
+ w1_touch_bit(dev, search_bit);
+ else
+ w1_write_bit(dev, search_bit);
}
#endif
diff -Nru a/drivers/w1/w1_family.c b/drivers/w1/w1_family.c
--- a/drivers/w1/w1_family.c 2004-10-19 16:54:19 -07:00
+++ b/drivers/w1/w1_family.c 2004-10-19 16:54:19 -07:00
@@ -84,8 +84,15 @@
spin_unlock(&w1_flock);
- while (atomic_read(&fent->refcnt))
- schedule_timeout(10);
+ while (atomic_read(&fent->refcnt)) {
+ printk(KERN_INFO "Waiting for family %u to become free: refcnt=%d.\n",
+ fent->fid, atomic_read(&fent->refcnt));
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(HZ);
+
+ if (signal_pending(current))
+ flush_signals(current);
+ }
}
/*
diff -Nru a/drivers/w1/w1_int.c b/drivers/w1/w1_int.c
--- a/drivers/w1/w1_int.c 2004-10-19 16:54:19 -07:00
+++ b/drivers/w1/w1_int.c 2004-10-19 16:54:19 -07:00
@@ -181,8 +181,15 @@
"%s: Failed to send signal to w1 kernel thread %d.\n",
__func__, dev->kpid);
- while (atomic_read(&dev->refcnt))
- schedule_timeout(10);
+ while (atomic_read(&dev->refcnt)) {
+ printk(KERN_INFO "Waiting for %s to become free: refcnt=%d.\n",
+ dev->name, atomic_read(&dev->refcnt));
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(HZ);
+
+ if (signal_pending(current))
+ flush_signals(current);
+ }
msg.id.mst.id = dev->id;
msg.id.mst.pid = dev->kpid;
next prev parent reply other threads:[~2004-10-20 0:31 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-20 0:16 [BK PATCH] I2C update for 2.6.9 Greg KH
2004-10-20 0:18 ` [PATCH] " Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH [this message]
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 0:18 ` Greg KH
2004-10-20 5:21 ` Eugene Surovegin
2004-10-20 6:26 ` [PATCH] fix recently introduced race in IBM PPC4xx I2C driver Eugene Surovegin
2004-10-22 19:55 ` Greg KH
2004-10-25 18:29 ` [PATCH] I2C update for 2.6.9 Bill Davidsen
2004-10-25 20:54 ` Jean Delvare
2004-10-26 21:03 ` Bill Davidsen
2004-10-20 15:57 ` [BK PATCH] " Jean Delvare
2004-10-20 16:40 ` Lee Revell
2004-10-22 21:34 ` Jean Delvare
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=10982315062289@kroah.com \
--to=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sensors@stimpy.netroedge.com \
/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 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).