[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080328122311.GA3613@spacedout.fries.net>
Date: Fri, 28 Mar 2008 07:23:11 -0500
From: David Fries <david@...es.net>
To: linux-kernel@...r.kernel.org
Cc: Evgeniy Polyakov <johnpol@....mipt.ru>
Subject: [PATCH 0/35] W1: w1 core deadlock and oops fixes, ds2490 updates
The Linux one wire system allows talking to little devices, mostly
sensors. Sensors such as temperature sensors that I want to put
around the house, but first the one wire system and ds2490 USB to one
wire controller driver needs to be stable. After a kernel panic, I
did most all of the development inside of qemu. I had an issue with
bulk transfers failing unless I told qemu to disconnect and reconnect
the USB device every time I reloaded, the module, but it worked really
nicely. What follows is a long list of fixes and enhancements. I
would like some tester feedback. I only have the ds2490 USB to one
wire controller and ds18b20 thermometer.
This set of patches fixes bugs in the one wire driver and the ds2490
one wire USB controller. Some of the bugs will deadlock the one wire
system and print out a message every second reminding you of this.
Others will panic the system. One will spam with printk in an
infinite loop. The w1_therm slave device driver would overflow the
userspace buffer, and didn't even work properly with `cat`.
In the name of being nice to the rest of the system, I've eliminated a
thread that was waking up and polling every second, for pretty much
only startup and shutdown events. The other thread, w1_process, will
now block when there isn't anything to do, and if sleeping it will be
immediately woken for a new search or for preparing to exit.
ds2490 USB to one wire master driver has been improved. The original
code was observed to take 3.91 seconds for a temperature conversion
and reading with 0.002s user and 3.001s system times. The system was
very unresponsive, mostly due to some mdelay(750) calls. Now it is
taking 0.860s elapsed with 0.004s user and 0.004s system time. That
is pretty good considering that the temperature conversion takes 750ms
(rounded up to 752ms). Some of the 108ms overload could be reduced by
a shorter reset period, overdrive data transfer speed, and combining
USB operations. The driver now supports the strong pullup, which is
useful for parasite powered devices.
I was keeping track of my changes in cvs. I've included the file, cvs
version number and log for that commit that make up the given patch.
The cvs number is just to help me keep everything organized to make
the patches. The patches are against 2.6.25-rc4.
Signed-off-by: David Fries <david@...es.net>
--
David Fries <david@...es.net>
http://fries.net/~david/ (PGP encryption key available)
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists