Daniele Venzano [Mon, 29 Dec 2003 17:59:18 +0000 (12:59 -0500)]
[netdrvr sis900] add suspend/resume support
The attached patch adds support for suspend/resume to the sis900 driver.
With this patch on resume the NIC is fully configured and operational,
before a module reload was needed because of the complete lack of
suspend/resume callbacks.
I added two functions, sis900_suspend and sis900_resume, with their
pointers in struct pci_driver. A vector of 16 u32 was then needed to the
to keep PCI data during suspend. I added it in struct sis900_private.
I updated the revision number to reflect my changes.
Looking at the code I also killed three typos.
The patch doesn't touch any other code.
Since I don't know anything on ethernet drivers the rule 'works for me'
is fully valid.
Pete Zaitcev [Mon, 29 Dec 2003 05:16:58 +0000 (21:16 -0800)]
[SPARC]: Get sun4c functional again in 2.6.0
Move some elements of task_struct into thread_info so that
these elements are locked into the TLB in the trap handlers
and thus will not cause a watchdog reset.
Arnaud Quette [Mon, 29 Dec 2003 04:31:36 +0000 (20:31 -0800)]
[PATCH] USB: disable hiddev support for MGE UPS
following my recent posts on libusb-devel and hidups, here's
a patch to disable hiddev support for MGE UPSs. It only
declares VID/PID as QUIRK_IGNORE in hid-core's blacklist.
This simply prevent hiddev to be loaded when plugging
an MGE UPS.
David Brownell [Mon, 29 Dec 2003 04:30:55 +0000 (20:30 -0800)]
[PATCH] USB: let USB_{PEGASUS,USBNET} depend on NET_ETHERNET
Adrian Bunk wrote:
> I observed the following small problem in 2.6:
>
> - MII depends on NET_ETHERNET
> - USB_PEGASUS and USB_USBNET select MII, but they depend only on NET
>
> The patch below lets USB_PEGASUS and USB_USBNET depend on NET_ETHERNET
> instead of NET to fix this issue.
Actually how about this one instead? The PEGASUS bit is the same.
The difference is that MII (and CRC32) are only attributed to the
driver code that needs those ... AX8817X needs both, ZAURUS just
needs CRC32. The core (which should eventually become a separate
module) shouldn't depend on those modules at all.
Also both CDCETHER and AX8817X are marked as non-experimental;
I recall Dave Hollis submitted a patch to do that for AX8817X,
and CDCETHER now seems to have gotten enough success reports too.
David Brownell [Mon, 29 Dec 2003 04:29:03 +0000 (20:29 -0800)]
[PATCH] USB: <linux/usb_gadget.h> doc updates
As more people have been using this API, the need for some
clarifications has (no surprise!) came up.
Most significant is the halt processing, needed to make
Alan's "File Storage Gadget" (mass storage class, talks
to usb-storage and Windows) handle fault cases cleanly.
Gadget drivers can't halt IN endpoints until the FIFO is
emptied by the host ... virtually no hardware tries to
sequence the DATA and STALL packets by itself.
Adam Kropelin [Mon, 29 Dec 2003 04:21:02 +0000 (20:21 -0800)]
[PATCH] USB: Stop hiddev generating empty events
hiddev is mistakenly returning empty hiddev_event structures for report
events. According to Documentation/usb/hiddev.txt, report events are
only sent when HIDDEV_FLAG_REPORT and HIDDEV_FLAG_UREF are both set.
Currently, report events from hid cause hiddev to generate empty
hiddev_event events when HIDDEV_FLAG_UREF is not set.
Wim Van Sebroeck [Mon, 29 Dec 2003 04:13:21 +0000 (20:13 -0800)]
[PATCH] Watchdog update
Kconfig:
Reflect new watchdog Documentation directory.
[USB] hid blacklist addition:
Add the Berkshire Products USB PC Watchdog to the hid blacklist.
This to avoid problems with USB-Disconnects when the card feels it
should reboot...
Ingo Molnar [Mon, 29 Dec 2003 02:23:53 +0000 (18:23 -0800)]
[PATCH] Fix context switch accounting
Noted by Nick Piggin, fix based on a patch by Linus.
I've done some additional cleanups: fixed a compilation warning on UP
and cleaned up the goto pick_next_task code. Moved the 'unlikely' to
the test as a whole.
I've tested this patch and the context-switch stats look OK.
vidc_mksound causes the kernel to crash badly when executed. As it does not do anything useful I did not take the time to find out why, but removed it.
The vidc does have an external reference clock that is used to generate 44100/20050/10025kHz sample rates. The code is changed in a way that it uses that reference clock that can better approximate the desired clock.
If we can approximate the desired rate to more than 1/256 accuracy, we return the desired rate instead of the real rate. This is to assist using some programs that for instance believe they need exacly 8kHz which we can not have, but we can have 8.018kHz which is pretty close so that nobody would notice the difference.
Russell King [Sun, 21 Dec 2003 19:51:30 +0000 (19:51 +0000)]
[ARM] Ensure that /proc/uptime returns sensible figures.
When we set xtime at boot from the RTC, we weren't setting the
monotonic time offset. This had the effect of making the uptime
rather large.
We get around this problem by using the do_settimeofday() to set
the current time. do_settimeofday() knows about this issue, and
will apply the appropriate correction to the monotonic time offset
for us.
Bill Marr [Fri, 19 Dec 2003 03:11:27 +0000 (19:11 -0800)]
[PATCH] Status Query On My MCT-U232 Patch
Brief Patch Description:
Fix a problem in the 'mct_u232' driver whereby output data gets held up in the
USB/RS-232 adapter for RS-232 devices which don't assert the 'CTS' signal.
Background:
The Belkin F5U109 is a 9-pin USB/RS-232 adapter that is supported by the
existing 'mct_u232' kernel module. Â Recently, I've been testing it under the
2.4.22 (Slackware 9.1) kernel and the 2.6.0-test9 kernel.
I've connected a Garmin 'GPS35 TracPak' GPS receiver (RS-232 interface) and an
ordinary RS-232 external modem to my PC's USB port via the Belkin F5U109
adapter.
Problem:
Although _reads_ from either of the RS-232 devices mentioned above work fine
via the Belkin adapter, _writes_ to the GPS receiver are not being seen by
the GPS. Â Writes to the modem, however, work perfectly.
Aside: The 'Linux USB Users' archives show that at least one other person
(circa May 2002) had the exact same problem I'm having, but it sounds like no
solution was ever determined because the person in question just bought a
different USB/RS-232 adapter.
Investigation:
Using the 'seyon' terminal emulator in Linux and a crude hardware RS-232
"breakout box" that I hacked together, I've determined that the problem is
related to the RTS/CTS RS-232 hardware handshaking.
After further investigation, I've concluded that RS-232 devices which do not
assert the 'Clear To Send' ('CTS') signal prevent the Belkin F5U109 adapter
from transmitting data to the RS-232 device when the current (version 1.1)
'mct_u232' module is used. The data gets "queued up" (up to a point -- 16
bytes, I think) in the adapter but never transmitted.
Since this GPS receiver works perfectly (reads and writes) when connected to a
PC running W98se using the same Belkin adapter and the Belkin-supplied
Windows driver, the Linux driver became suspect.
After some testing with SniffUSB, I found that the Windows driver sends a
couple of unique undocumented USB 'device requests' that the Linux driver
does not. As it turns out, the second of those 2 requests is critical in
making the adapter transmit data to a device which doesn't assert 'CTS'.
For completeness, the Windows driver in use was determined from the 'Device
Manager', 'Driver File Details' page:
  U2SPORT.VXD
  Provider: Magic Control Technology
  File version: 1.21P.0104 for Win98/Me
Solution:
My patch adds the 2 missing USB 'device request' commands right after a
baud-change command. This mimics the operation of the W98 driver.
Unfortunately, after much testing, I found no other operation (besides a
baud-change request) under Windows that triggers either of these 2 'device
request' commands. This makes it impossible to fully document the behavior of
these requests, but I've made entries for them alongside the others in the
'mct_u232.h' file.
Purely for clarity, the patch also modifies various comments in 'mct_u232.h',
mostly to reflect proper sizes of the various 'USB Device Request' fields per
the USB 1.1 specification.
The patch also updates the version number of the driver, corrects a minor
typographical error, and documents a difference in the length of the data in
a 'baud rate change' command for certain adapters which use a coded baud-rate
rather than the conventional RS-232 baud rate divisor.
I've provided (tested) patches for both the 2.4.22 and the 2.6.0-test9
kernels.
Please note that the changes to 'mct_u232.h' apply to both 2.4.22 and
2.6.0-test9 since that file has not changed between those kernel releases.
Nevertheless, I've included that (same) portion of the patch in both
attachments for simplicity.
Dmitry Torokhov [Thu, 18 Dec 2003 13:35:52 +0000 (05:35 -0800)]
[PATCH] Input: remove synaptics config option
Remove Synaptics config option. Since mousedev was fixed with regard to
touchpads generating absolute events there should no troubles for users
migrating from older kernel or different hardware so we can have it always
compiled in.
Dmitry Torokhov [Thu, 18 Dec 2003 13:35:36 +0000 (05:35 -0800)]
[PATCH] Input: add serio_[un]register_port_delayed to fix deadlock
Add serio_[un]register_port_delayed to allow delayed execution of
register/unregister code (via kseriod) when it is not clear whether
serio_sem has been taken or not. Use in i8042.c to avoid deadlock
Dmitry Torokhov [Thu, 18 Dec 2003 13:35:20 +0000 (05:35 -0800)]
[PATCH] Input: psmouse fixes
- Remove psmouse_pm_callback since i8042 now has its own resume
handler which will issue reconnect request
- Do not close/open serio port in psmouse_reconnect since i8042
should restore ports to the proper state before calling reconnect
Dmitry Torokhov [Thu, 18 Dec 2003 13:34:47 +0000 (05:34 -0800)]
[PATCH] Input: implement resume methods
- Implement resume methods using serio_reconnect facility
- Register i8042 with sysfs
- Register i8042 with older PM scheme to restore keyboard
and mouse for APM users
- Convert parameter handling to the new style
- Unregister port not only when there is no free IRQ but
also if the port fails to activate.
Dmitry Torokhov [Thu, 18 Dec 2003 13:34:30 +0000 (05:34 -0800)]
[PATCH] Input: add psmouse_proto parameter
New parameter psmouse_proto to replace psmouse_noext. Allows to specify
highest PS/2 protocol extension that kernel has permission to negotiate
(bare|imps|exps). psmouse_noext marked as deprecated and emits a warning
when used. parameter parsing converted to the new scheme.
Vojtech Pavlik [Thu, 18 Dec 2003 13:33:58 +0000 (05:33 -0800)]
[PATCH] Fixes for keyboard 2.4 compatibility
I have two patches I'd like to get tested by a wider audience before
sending them to Linus for the 2.6 tree.
The first one fixes an issue in current 2.6-test with AT keyboard repeat
rate setting, the second one makes setkeycodes/getkeycodes work the same
as 2.4, so that people can keep their setups. It also fixes japanese and
korean key handling.
I just want to share a little change that I've did to psmouse_pm_callback()
which without this, my synaptics touchpad would prevent my laptop (IBM
Thinkpad T30) from suspending.
Dmitry Torokhov [Thu, 18 Dec 2003 13:33:25 +0000 (05:33 -0800)]
[PATCH] Input: unregister i8042 port when writing to control register fails
I think that if we can't write to the control register it's not less critical
than not having a free IRQ so we better unregister port in this case as well.
Peter Osterlund [Thu, 18 Dec 2003 13:33:09 +0000 (05:33 -0800)]
[PATCH] synaptics powerpro fix
Made the packet checking code less strict, so that the driver works also for
touchpads that don't strictly follow the synaptics absolute protocol.
Problem reported by Anders Kaseorg using a PowerPro C 3:16 laptop.
Dmitry Torokhov [Thu, 18 Dec 2003 13:32:52 +0000 (05:32 -0800)]
[PATCH] Synaptics: use serio_reconnect
Input/Synaptics:
1. Support for pass-through port moved from Synaptics driver to psmouse
itself, it is cleaner and should allow using it in other drivers if
needed.
2. The driver makes use of new reconnect functionality in serio. It will
try to keep the same input device after resume or when it resets itself.
3. If mouse is disconnected or other mouse plugged in while sleeping the
driver should correctly recognize that and create a new serio/input
device.
Dmitry Torokhov [Thu, 18 Dec 2003 13:32:03 +0000 (05:32 -0800)]
[PATCH] Add black list to handler<->device matching
Input: Introduce an optional blacklist field in input_handler structure.
When loading a new device or a new handler try to match device
against handler's black list before doing match on required
attributes.
This allows to get rid of "surprises" in connect functions, IMO
connect should only fail when it physically can not connect, not
because it decides it does not like device.
Dmitry Torokhov [Thu, 18 Dec 2003 13:31:47 +0000 (05:31 -0800)]
[PATCH] serio: possible race between port removal and kseriod
Input: There is a possibility that serio might get deleted while there
are outstanding events involving that serio waiting for kseriod
to process them. Invalidate them so kseriod thread will just
drop dead events.
Jeff Garzik [Wed, 17 Dec 2003 12:35:44 +0000 (07:35 -0500)]
[libata promise] fix another ugly bug
For the SX4, only one Host DMA (local DIMM) engine is on the hardware,
while there is an ATA engine for each SATA port. This means that
Host DMA transactions must be queued. When previously fixing this problem
(the driver had previously assumed an HDMA engine per port), I stored
the HDMA packet queue in a per-port data structure.
This was incorrect: this patch changes it to correctly use a
per-host data structure, not a per-port structure.
Jes Sorensen [Wed, 17 Dec 2003 00:26:43 +0000 (16:26 -0800)]
[PATCH] qla1280 crash fix in error handling
This fixes a bug in the qla1280 driver where it would leave a pointer to
an on the stack completion event in a command structure if
qla1280_mailbox_command fails. The result is that the interrupt handler
later tries to complete() garbage on the stack. The mailbox command can
fail if a device on the bus decides to lock up etc.
Jens Axboe [Wed, 17 Dec 2003 00:12:29 +0000 (16:12 -0800)]
[PATCH] CDROM_SEND_PACKET bug
I just found Yet Another Bug in scsi_ioctl - CDROM_SEND_PACKET puts a
kernel pointer in hdr->cmdp, where sg_io() expects to find user address.
This worked up until recently because of the memcpy bug, but now it
doesn't because we do the proper copy_from_user().
This fix undoes the user copy code from sg_io, and instead makes the
SG_IO ioctl copy it locally. This makes SG_IO and CDROM_SEND_PACKET
agree on the calling convention, and everybody is happy.
I've tested that both
cdrecord -dev=/dev/hdc -inq
and
cdrecord -dev=ATAPI:/dev/hdc -inq
works now. The former will use SG_IO, the latter CDROM_SEND_PACKET (and
incidentally would work in both 2.4 and 2.6, if it wasn't for
CDROM_SEND_PACKET sucking badly in 2.4).
Jens Axboe [Mon, 15 Dec 2003 23:51:55 +0000 (15:51 -0800)]
[PATCH] Fix IDE bus reset and DMA disable when reading blank DVD-R
From Jon Burgess:
There is a problems with blank DVD media using the ide-cd driver.
When we attempt to read the blank disk, the drive responds to the read
request by returning a "blank media" error. The kernel doesn't have
any special case handling for this sense value and retries the request
a couple of times, then gives up and does a bus reset and disables DMA
to the device.
Which obviously doesn't help the situation.
The sense key value of 8 isn't listed in ide-cd.h, but it is listed in
scsi.h as a "BLANK_CHECK" error.
This trivial patch treats this error condition as a reason to abort
the request. This behaviour is the same as what we do with a blank CD-R.
It looks like the same fix might be desired for 2.4 as well, although
is perhaps not so important since scsi-ide is normally used instead.
Dmitry Torokhov [Mon, 15 Dec 2003 19:56:37 +0000 (14:56 -0500)]
[PATCH] Fwd: Re: Atmel - possible SKB leak?
Jeff,
Atmel driver in 2.6.0-test11 is leaking SKBs if card gets disassociated
from an AP when it's about to transfer packet. Simon (atmel maintainer)
is OK with the patch. Given the fact that we are leaking memory I think
it may be beneficial to push it to Linus (if you like the patch).
Andrew Morton [Mon, 15 Dec 2003 19:52:31 +0000 (14:52 -0500)]
[PATCH] Re: Deadlock in 3c574_cs.c (fwd)
Patch looks fine to me, thanks. I've queued up the below.
From: Ville Nuorvala <vnuorval@tcs.hut.fi>
I've experienced random lockups witch become almost certain under heavy
loads, like when doing ping6 -f. The culprit seems to be the 3c574_cs
driver, which locks lp->window_lock twice when calling update_stats() from
el3_interrupt().
Neil Brown [Mon, 15 Dec 2003 08:35:56 +0000 (00:35 -0800)]
[PATCH] Fix possible bio corruption with RAID5
1/ make sure raid5 doesn't try to handle multiple overlaping
requests at the same time as this would confuse things badly.
Currently it justs BUGs if this is attempted.
2/ Fix a possible data-loss-on-write problem. If two or
more bio's that write to the same page are processed at the
same time, only the first was actually commited to storage.
3/ Fix a use-after-free bug. raid5 keeps the bio's it is given
in linked lists when more than one bio touch a single page.
In some cases the tail of this list can be freed, and
the current test for 'are we at the end' isn't reliable.
This patch strengths the test to make it reliable.
David Brownell [Mon, 15 Dec 2003 05:38:28 +0000 (21:38 -0800)]
[PATCH] USB: <linux/usb_ch9.h> new descriptor codes, types
This patch adds definitions:
- New "video" class, for video cameras and more complicated devices;
- New "Interface association" descriptor type, used by video class,
along with two other assigned desciptor type codes (OTG, "debug")
listed in the same ECN to the USB 2.0 spec;
- Type declarations for "Interface association" and OTG descriptors.
It also replaces three copies of USB_DT_CS_* declarations in audio
support with one in <linux/usb_ch9.h>, and uses the newly exposed
symbol in "usbnet". (Near as I can tell, the convention for those
"class specific" descriptor types started with audio, and was then
adopted by several other class specifications.)
Linus Torvalds [Sun, 14 Dec 2003 10:28:27 +0000 (02:28 -0800)]
Fix thread group leader zombie leak
Petr Vandrovec noticed a problem where the thread group leader
would not be properly reaped if the parent of the thread group
was ignoring SIGCHLD, and the thread group leader had exited
before the last sub-thread.
Linus Torvalds [Sat, 13 Dec 2003 13:36:30 +0000 (05:36 -0800)]
More subtle SMP bugs in prepare_to_wait()/finish_wait().
This time we have a SMP memory ordering issue in prepare_to_wait(),
where we really need to make sure that subsequent tests for the
event we are waiting for can not migrate up to before the wait
queue has been set up.
[PATCH] HPFS: missing lock_kernel() in hpfs_readdir()
In 2.5.x, the BKL was pushed from vfs_readdir() into the filesystem
specific functions. But only the unlock_kernel() made it into the HPFS
code, lock_kernel() got lost on the way. This rendered the filesystem
unusable.
This adds the missing lock_kernel(). It's been tested by Timo Maier who
also reported the problem earlier today.
David Brownell [Fri, 12 Dec 2003 06:36:36 +0000 (22:36 -0800)]
[PATCH] USB: usb driver binding fixes
There are problems lurking in the driver binding code for usb,
with highlights being disagreements about:
(a) locks: usb bus writelock v. BKL v. driver->serialize
(b) driver: interface.driver v. interface.dev.driver
Fixing those is going to take multiple patches, and I thought
I'd start out with a small one that's relatively simple. This:
- Cleans up locking.
* Updates comments and kerneldoc to reflect that the
usb bus writelock is what protects against conflicts
when binding/unbinding drivers to devices.
* Removes driver->serialize ... not needed, since
it's only gotten when the bus writelock is held.
* Removes incorrect "must have BKL" comments, and one
bit of code that tried to use BKL not the writelock.
- Removes inconsistencies about what driver is bound to the
interface ... for now "interface.driver" is "the truth".
* usb_probe_interface() will no longer clobber bindings
established with usb_driver_claim_interface().
* usb_driver_release_interface() calls device_release_driver()
for bindings established with probe(), so the driver model
updates (sysfs etc) are done as expected.
* usb_unbind_interface() doesn't usb_driver_release_interface(),
since release() should eventually _always_ call unbind()
(indirectly through device_release_driver).
Essentially there are two driver binding models in USB today,
and this patch makes them start to cooperate properly:
- probe()/disconnect(), used by most drivers. This goes
through the driver model core.
- claim()/release(), used by CDC drivers (ACM, Ethernet)
and audio to claim extra interfaces and by usbfs since it
can't come in through probe(). Bypasses driver model.
That interface.driver pointer can be removed by changing the
claim()/release() code to use the driver model calls added
for that purpose: device_{bind,release}_driver(). I didn't
do that in this patch, since it'll have side effects like
extra disconnect() calls that drivers will need to handle.
A separate usbfs patch is needed to fix its driver binding;
mostly just to use the right lock, but those changes were
more extensive and uncovered other issues. (Like, I think,
some that Duncan has been noticing ...)
David T. Hollis [Fri, 12 Dec 2003 06:31:42 +0000 (22:31 -0800)]
[PATCH] USB: Mark AX8817x usbnet driver as non-experimental
Trivial patch to remove the Experimental mark on the AX8817x driver
portion of usbnet. The driver seems to have made the rounds enough and
is working quite well.
Linus Torvalds [Fri, 12 Dec 2003 06:20:08 +0000 (22:20 -0800)]
Fix subtle bug in "finish_wait()", which can cause kernel stack
corruption on SMP because of another CPU still accessing a waitqueue
even after it was de-allocated.
Use a careful version of the list emptiness check to make sure we
don't de-allocate the stack frame before the waitqueue is all done.
Nemosoft Unv. [Fri, 12 Dec 2003 06:13:03 +0000 (22:13 -0800)]
[PATCH] USB: PWC 8.12 driver update
Attached you will find patches that will bring the Philips Webcam driver
(PWC) up to version 8.12. The most important new feature is support for
the motorized pan & tilt feature of the new Logitech QuickCam
Orbit/Sphere, which I don't think is in the stores yet (at least it's
not on Logitech's website), but should be there soon. In addition, the
documentation in the kernel about the cams is updated.
Alan Stern [Fri, 12 Dec 2003 03:57:12 +0000 (19:57 -0800)]
[PATCH] USB: Allow configuration #0
This patch helped Jon Wilson. It allows devices to have a configuration
numbered 0, in spite of the standard convention that config #0 really
means unconfigured.