[PATCH] ppc32: Fix typo in USB sleep code on intrepid based laptops
This fixes a typo in the low level platform code that puts to sleep and
wakes up the USB cell. This fixes a problem when pmdisk is used on
those machines (pmdisk patch not merged yet, soon maybe...)
Jeff Garzik [Thu, 27 May 2004 12:22:20 +0000 (08:22 -0400)]
[netdrvr ixgb] massive update
Since Intel agreed to submit further updates via broken-up patches
like they do currently (and admirably) for e1000 and e100, I agreed
to merge this update to bring the driver up to speed.
Contributed by: Ayyappan.Veeraiyan@intel.com
Changes:
Features implemented
* Support for new 850nm adapters.
* Copyright notice updated to include year 2004.
* Fix for "ixgb does not maintain non-default MTU setting across a
link loss" issue - When link loss happens in non-default MTU
environment, driver will incorrectly operate with default 1500 MTU
setting.
* Netpoll support added
* Ethtool support - status functionality, FlowControl interface,
Checksum interface, TSO and Scatter Gather interfaces
* Race condition fix - Race condition (TX path) exists between
ixgb_xmit_frame and clean_tx_irq routines in handling the queue.
* Removed dead code segments (#if 0)
Performance improvement features
* Mod operator usage is removed - used to cause performance
problems in non-IA architecture based machines
* Multiple ICR register read in ISR is avoided
* RS bit set on only 'end of packet' TX descriptors - to avoid
multiple writebacks by controller for packets with multiple descriptors.
* RX descriptors prefetch is done - improved 1500 MTU TX
performance
All relevant e1000 driver cleanups ported to ixgb
* Valid error propagation in functions ixgb_up, ixgb_probe,
ixgb_open.
* NAPI code cleanups
* u8, u16 and u32 data types are changed to uint8_t, uint16_t and
uint32_t respectively. We use these types on our shared code for
multiple OSes and also to make it uniform with e1000 driver.
* Some functions in ixgb_main.c are moved to different location -
This enables easy porting of e1000 bug fixes to ixgb
Andrew Morton [Thu, 27 May 2004 11:33:27 +0000 (07:33 -0400)]
[PATCH] net/sk98lin: correct buggy VPD in ASUS MB
From: Jeff Lightfoot <jeffml@pobox.com>
The following patch to net/sk98lin/skvpd.c was put together by Marc Bouget,
mbouget at club-internet.fr.
This patch works around a corrupt EEPROM (VPD?) in the ASUS K8V Deluxe SE
motherboard ethernet chipset and allows the network driver to work
correctly. We have written to ASUS and the sk98lin maintainers but have
not heard anything back.
Roger Luethi [Thu, 27 May 2004 11:07:51 +0000 (07:07 -0400)]
[PATCH] via-rhine: Whitespace clean-up
- Switch to 8 char tabs.
- Remove kernel log pointer to the scyld web site -- it's
a) fairly irrelevant by now and
b) gone.
- Remove Emacs Voodoo.
- More white space clean up, mostly coding style.
Roger Luethi [Thu, 27 May 2004 11:07:33 +0000 (07:07 -0400)]
[PATCH] via-rhine: Fix force media
Lucas Nussbaum and Dirk Koeppen each found independently that the code
for forcing media options in via-rhine is borked and suggested the fix
below. I've been sitting on this way too long because there is more
badness in the immediate vicinity which needs a bigger surgery.
The second hunk fixes a braino I managed to introduce myself.
Don Fry [Thu, 27 May 2004 10:07:05 +0000 (06:07 -0400)]
[PATCH] pcnet32: fix for patch 8 le16_to_cpu
Joe Perches pointed out an error in patch 8. As I looked at the results
closer 3 out of 4 looked correct. This fixes the output for the last
case. Output is now the same on IA32 and PPC64 hardware.
Stefan Rompf [Thu, 27 May 2004 09:51:22 +0000 (05:51 -0400)]
[netdrvr b44] always restore PCI config on resume
the Broadcom BCM4401 driver restores pci configuration on resume only when the
device is up. On my notebook, this leads to a failure when the device is down
during the S3 cycle. Short solution for now: Always restore pci config.
Kevin Curtis [Thu, 27 May 2004 09:24:17 +0000 (05:24 -0400)]
[netdrvr wan] farsync driver update
1) Provides support for new FarSync cards T1U, T2U, T4U and TE1
2) Provides support for an E1 interface
3) Provides support for a variant of X.21 that allows transmit and
receive clocks
4) Provide a raw socket interface directly to the data from the line.
5) Improves performance with less time in interrupts and more in BH's
Don Fry [Thu, 27 May 2004 09:12:31 +0000 (05:12 -0400)]
[PATCH] pcnet32: avoid timeout with tcpdump
This patch avoids a timeout when entering/exiting promiscuous mode with
tcpdump. All pending xmit operations are flushed and if the queue is
full the timeout will occur. The wake_queue avoids that timeout.
Tested ppc64 and ia32.
Don Fry [Thu, 27 May 2004 09:12:15 +0000 (05:12 -0400)]
[PATCH] pcnet32: fix bogus carrier errors with 79c973
The 79C973 version of the pcnet32 chipset would report all transmit
operations as being sent with a carrier error. The root cause was
writing reserved bits in bcr33. It caused the 973 to report xmit
as errors, and caused 975 and 976 to hard hang when reading bcr34.
My thanks to Bruce Penrod for his help in finding the cause of this
bug.
Don Fry [Thu, 27 May 2004 09:04:02 +0000 (05:04 -0400)]
[PATCH] pcnet32: remove timer and complexity.
This removes the timer I recently added, and the 'ltint' interrupt
mitigation from the 79C971 and 79C972. It did not improve performance,
added complexity, and was a bad idea in hind sight.
Don Fry [Thu, 27 May 2004 09:03:48 +0000 (05:03 -0400)]
[PATCH] pcnet32: fix boundary comparison bug.
This patch fixes a boundary condition. It is possible to get an
interrupt and have the transmit queue completely full. Without this
the driver will leak skb's and pci maps (if the arch supports them).
Paul Mundt [Thu, 27 May 2004 08:53:44 +0000 (04:53 -0400)]
[PATCH] Fix 8139too ring size for dreamcast/embedded
Presently 2.6.6 backs out the CONFIG_8139_RXBUF_IDX in favor of using a
hardcoded 8139_RXBUF_IDX (again). This seems to have been done due to
some issues occuring with 8139_RXBUF_IDX =3D=3D 3, however (as the Kconfig
pointed out), we still need 8139_RXBUF_IDX =3D=3D 1 in the CONFIG_SH_DREAMC=
AST
case.
The patch which made this change can be seen at:
{MIME-mangled URL}
Before that, CONFIG_8139_RXBUF_IDX was set to 1 both in the
CONFIG_SH_DREAMCAST and CONFIG_EMBEDDED cases. This patch adds that
back into the current 8139too.
Andrew Morton [Thu, 27 May 2004 00:36:46 +0000 (17:36 -0700)]
[PATCH] nfsd: deleting symlinks over nfs causes oops on unmount
From: "J. Bruce Fields" <bfields@fieldses.org>
From: Neil Brown <neilb@cse.unsw.edu.au>
This fixes an oops on unmount (failure of the assertation at
fs/ext3/super.c:421). Probably reproduceable just by creating and deleting a
single symlink over nfs and then unmounting the exported filesystem.
Recent change to fh_compose means dentry reference is *not* consumed, and so
usually has to be explicitly dput afterwards. One usage was missed in that
patch, so this dput is needed.
Andrew Morton [Thu, 27 May 2004 00:36:14 +0000 (17:36 -0700)]
[PATCH] CPU Hotplug: restore Idle task's priority during CPU_DEAD notification
From: Srivatsa Vaddagiri <vatsa@in.ibm.com>
Fix a CPU Hotplug problem wherein idle task's "->prio" value is not
restored to MAX_PRIO during CPU_DEAD handling. Without this patch, once a
CPU is offlined and then later onlined, it becomes "more or less" useless
(does not run any task other than its idle task!)
Ingo said:
The __setscheduler() call is (technically) incorrect because in the
SCHED_NORMAL case the prio should be zero. So it's a bit cleaner to set up
the static priority to MAX_PRIO and then revert the policy to SCHED_NORMAL
via __setscheduler().
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org>
Andrew Morton [Thu, 27 May 2004 00:35:42 +0000 (17:35 -0700)]
[PATCH] Fix the setting of file->f_ra on block-special files
We need to set file->f_ra _after_ calling blkdev_open(), when inode->i_mapping
points at the right thing. And we need to get it from
inode->i_mapping->host->i_mapping too, which represents the underlying device.
Also, don't test for null file->f_mapping in the O_DIRECT checks.
Andrew Morton [Thu, 27 May 2004 00:35:31 +0000 (17:35 -0700)]
[PATCH] Set d_bucket correctly for anonymous dentries
From: Neil Brown <neilb@cse.unsw.edu.au>
In researching the oopses reported in bug #2761, Neil came up with:
I have found one problem, but it isn't particularly new and I cannot
see how it would be related.
When d_alloc_anon creates an anonymous dentry, it is put on a special hash
chain for anonymous dentries (sb->s_anon), but d_bucket is set to
d_hash(parent, name_hash)
If, when it is eventually moved to a proper name, that hash value is the same
as the final hash value, it will not be moved to the right bucket, and so it
not be accessible by name. This patch should fix it.
anonymous dentries have their own private hash "bucket" (sb->s_anon) and so
d_bucket should be set to a unique (impossible) address, else d_move will
get confused.
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org>
Andrew Morton [Thu, 27 May 2004 00:35:21 +0000 (17:35 -0700)]
[PATCH] posix locks oops fix
From: Andreas Gruenbacher <agruen@suse.de>
There is a race between unshare_files() and the following steal_locks().
As a consequence, steal_locks() may steal some additional FL_POSIX locks
that don't belong to the current thread. This triggers a BUG in
locks_remove_flock().
In detail, the current thread shares its files struct with other threads.
This causes unshare_files() to associate the current thread with a copy of
its files_struct. The copy shares all file objects with the original files
struct. In the time between unshare_files() and steal_locks(), another
thread creates a new file and a FL_POSIX lock on it. The current thread
gets into steal_locks() and takes over all FL_POSIX locks that refer to the
previous files_struct, including the new lock. We do
put_files_struct(original files_struct). This causes the file handle to
the new file to be closed. We get into locks_remove_posix() and miss the
lock, because its fl_owner field now refers to the new files_struct.
Finally we get into locks_remove_flock(), and stumble upon the lock.
While looking into this bug report I gathered the following data with a
SUSE kernel (oops and LKCD dump from Chris):
Here's a proposed fix. As a side effect, steal_locks no longer walks the
global list of locks, but only the locks of all open inodes.
What are the reasons (other than historic ones) for not getting rid of
fl_owner and using fl_pid instead, by the way? I think that would clean up
the whole mess with file locks a bit.
Andrew Morton [Thu, 27 May 2004 00:34:58 +0000 (17:34 -0700)]
[PATCH] ppc64 kernel hackers can't spell
From: Anton Blanchard <anton@samba.org>
From: Dave Hansen
This patch is obviously of the utmost importance. It probably doesn't matter
as much for kernel error messages, but one of these mistakes is in a
user-readable /proc file.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Dave Hansen <haveblue@us.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org>
Shirley Ma [Wed, 26 May 2004 06:44:12 +0000 (23:44 -0700)]
[IPV6]: Add new IPv6 MIBs counters support through netlink.
This patch implements both per interface and global new IPv6 MIBs counters
through netlink based on new IP MIBs draft, 64 bit counters are not supported
here because of performance issues. It coexists old IPv6 MIBs counters (which
are through proc file system) for the compatibility.
Christophe Saout [Wed, 26 May 2004 06:25:49 +0000 (23:25 -0700)]
[CRYPTO]: Fix two scatterwalk problems.
- After calling scatterwalk_copychunks walk_in might point to the next
page which will break scatterwalk_samebuf (in this case src_p should
point to tmp_src anyway and scatterwalk_samembuf returns 0).
- scatterwalk_samebuf should also check for equal offsets inside the page
(just bad for performance in some cases).
Paul Mackerras [Wed, 26 May 2004 02:03:18 +0000 (19:03 -0700)]
[PATCH] ppc64: fix nonexistent irq affinity
This fixes a bug where, if we try to set the affinity on an unused
virtual IRQ number on a logically-partitioned pSeries system, we call
the firmware with physical IRQ number = -1, which it doesn't like.
With this patch we just ignore the attempt.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Linus Torvalds [Wed, 26 May 2004 00:56:23 +0000 (17:56 -0700)]
Split ptep_establish into "establish" and "update_access_flags"
ptep_establish() is used to establish a new mapping at COW time,
and it always replaces a non-writable page mapping with a totally
new page mapping that is dirty (and likely writable, although ptrace
may cause a non-writable new mapping). Because it was nonwritable,
we don't have to worry about losing concurrent dirty page bit updates.
ptep_update_access_flags() leaves the same page mapping, but updates
the accessed/dirty/writable bits (it only ever sets them, and never
removes any permissions). Often easier, but it may race with a dirty
bit update on another CPU.
Booted on x86 and ppc64.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Steven King [Tue, 25 May 2004 06:09:27 +0000 (23:09 -0700)]
[IPSEC]: Fix buglet in AF_KEY spddelete
When trying to spddelete individual entries using setkey, spddelete always
fails. The culprit is in net/af_key.c; spdadd sets the family field of the
selector when creating an entry, but spddelete doesn't when building a
selector to match for xfrm_policy_bysel. Trivial fix is to have spddelete
set the family field in the selector in same way spdadd does.
Linus Torvalds [Tue, 25 May 2004 06:04:59 +0000 (23:04 -0700)]
Introduce architecture-specific "ptep_update_dirty_accessed()"
helper function to write-back the dirty and accessed bits from
ptep_establish().
Right now this defaults to the same old "set_pte()" that we've
always done, except for x86 where we now fix the (unlikely)
race in updating accessed bits and dropping a concurrent dirty
bit.