Matthew Wilcox [Fri, 19 Mar 2004 06:08:16 +0000 (22:08 -0800)]
[PATCH] PCI: Use insert_resource in pci_claim_resource
On ia64, the parent resources are not necessarily PCI resources and
so won't get found by pci_find_parent_resource. Use the shiny new
insert_resource() function instead, which I think we would have used
here had it been available at the time.
Russell King [Fri, 19 Mar 2004 04:52:30 +0000 (20:52 -0800)]
[PATCH] fix "optimize && ?"
This prevents the "optimize && ?" message appearing when the kernel
configuration tool is run. The message could be eliminated from the
tool, but I'd rather fix the needlessly over-complicated expression:
Rusty Russell [Fri, 19 Mar 2004 00:04:03 +0000 (16:04 -0800)]
[PATCH] Hotplug CPUs: Kswapd Changes
Keep track of kswapds: it's OK that they get moved off a node when the
last CPU goes down, but when a CPU comes back, we should try to move
the kswapd back onto its node.
Rusty Russell [Fri, 19 Mar 2004 00:03:44 +0000 (16:03 -0800)]
[PATCH] Hotplug CPUs: Make ksoftirqd Handle CPU Going Down
Change ksoftirqd not to assume it's on the CPU: when a cpu goes down,
it will be rudely dragged off. Since do_softirq() uses
smp_processor_id(), it's easiest to disable preemption, check that the
cpu is still up, then call do_softirq().
If the cpu is actually offline, wait for the notifier, which kills us.
Take over tasklets from dead cpu in the notifier.
Clean up redundant double assignment in CPU_UP callback.
Rusty Russell [Fri, 19 Mar 2004 00:03:35 +0000 (16:03 -0800)]
[PATCH] Hotplug CPUs: Read Copy Update Changes
Add hook for RCU to handle jobs on dead cpu. Requires new
tasklet_kill_immediate for RCU to clean up its tasklet (which might
have been about to run, so tasklet_kill won't work).
Rusty Russell [Fri, 19 Mar 2004 00:03:25 +0000 (16:03 -0800)]
[PATCH] Hotplug CPUs: Make Migration Thread Handle CPUs Going
Change the migration thread to directly use its cpu arg, rather than
smp_processor_id(): if a cpu goes up then down rapidly, it can be on
the wrong cpu just before it is stopped.
Add code to stop the migration thread on CPU_DEAD and CPU_UP_CANCELED.
Rusty Russell [Fri, 19 Mar 2004 00:03:16 +0000 (16:03 -0800)]
[PATCH] Hotplug CPUs: Set prio of migration thread before CPU
We need the migration thread to be RT as soon as the CPU comes online:
for example, stop_machine() (another RT task) expects to yield to it.
Extract the core of setscheduler() and do that when the migration
thread is created. rq lock is a precaution against the (theoretical)
possibility of someone else doing setscheduer on this thread at the
same time.
Rusty Russell [Fri, 19 Mar 2004 00:03:06 +0000 (16:03 -0800)]
[PATCH] Hotplug CPUs: Keep IRQs off in Migration Thread Calling
Currently the migration thread re-enables irqs, then calls
move_task_away which disables IRQs again and actually does the move.
This means there is a race where the migration thread gets preempted,
and the target CPU can go down.
Hold irqs disabled in migration thread across move_task_away(), which
now doesn't need to save flags (the other caller is the hotplug CPU
code, where irqs are also disabled).
Rusty Russell [Fri, 19 Mar 2004 00:02:56 +0000 (16:02 -0800)]
[PATCH] Hotplug CPUs: Take cpu Lock Around Migration
Grab cpu lock around sched_migrate_task() and sys_sched_setaffinity().
This is a noop without CONFIG_HOTPLUG_CPU.
The sched_migrate_task may have a performance penalty on NUMA if lots
of exec rebalancing is happening, however this only applies to
CONFIG_NUMA and CONFIG_HOTPLUG_CPU, which noone does at the moment
anyway.
Also, the scheduler in -mm solves the race another way, so this will
vanish then.
Andrew Morton [Thu, 18 Mar 2004 23:04:08 +0000 (15:04 -0800)]
[PATCH] remove_suid() should return error code
From: Nikita Danilov <Nikita@Namesys.COM>
remove_suid() ignores return value of notify_change()->i_op->setattr().
This mean, that even if file system fails to clear suid bit,
generic_file_aio_write_nolock() proceeds with write, which is unsafe.
Actually, even ext2's ->setattr() can fail, when trying to update ACL, for
example.
Attached patch modifies remove_suid() to return result of ->setattr(), and
updates in-tree callers.
Andrew Morton [Thu, 18 Mar 2004 23:03:58 +0000 (15:03 -0800)]
[PATCH] meye driver update
From: Stelian Pop <stelian@popies.net>
This patchlet is just a resync with my tree, it only increments the meye
driver version number and makes some small comment changes as suggested by
Randy Dunlap.
Andrew Morton [Thu, 18 Mar 2004 23:03:49 +0000 (15:03 -0800)]
[PATCH] VM overcommit documentation fixes
From: Andy Whitcroft <andyw@uk.ibm.com>
Whilst looking at the memory overcommit logic I noticed that the pointer to
the documentation from the *_vm_enough_memory calls is incorrect. Also
that in one instance the routine does not have the expected pointers.
Andrew Morton [Thu, 18 Mar 2004 23:03:30 +0000 (15:03 -0800)]
[PATCH] add note about "Copyright" to SubmittingDrivers
From: Grant Grundler <grundler@parisc-linux.org>
This patch adds a comment to "Documentation/SubmittingDrivers" about the
importance of adding a Copyright notice in submitted code.
The parisc-linux port has neglected this in the past and I've been slowly
trying to correct that (along with proper GPL header).
While I make it sound like GPL is the "only" acceptable license, I'll leave
it up to lawyers to determine what other appropriate license could be used
for a new driver.
Andrew Morton [Thu, 18 Mar 2004 23:02:40 +0000 (15:02 -0800)]
[PATCH] EDD: move code from i386-specific locations to generic
From: Matt Domsch <Matt_Domsch@dell.com>
Three patches to move the BIOS Enhanced Disk Drive code from i386-specific
locations into more generic locations, which will allow it to be used on
x86-64 as well.
Andrew Morton [Thu, 18 Mar 2004 23:02:23 +0000 (15:02 -0800)]
[PATCH] Fix uninlined memcmp on i386
From: DHollenbeck <dick@softplc.com>
This patch was needed against a pristine 2.6.4 kernel when compiling with
"gcc 3.4 _very recent_" using the -Os option.
Without this patch, modules would use a non-inline memcmp() and then not
find it in the kernel, causing depmod to complain and some modules not to
load.
Andrew Morton [Thu, 18 Mar 2004 23:01:15 +0000 (15:01 -0800)]
[PATCH] doc. updates/typos
From: "Randy.Dunlap" <rddunlap@osdl.org>
Remove the rest of references to smp.tex
Documentation/cpufreq => Documentation/cpu-freq
DocBook/tulip.{pdf,ps,html} => DocBook/tulip-user.{pdf,ps,html}
Bunch of other typos.
Andrew Morton [Thu, 18 Mar 2004 23:00:47 +0000 (15:00 -0800)]
[PATCH] config: choice fix
From: Roman Zippel <zippel@linux-m68k.org>
When a boolean choice value has a dependency of 'm' it can be shortly
treated as a tristate symbol. This fixes this and also add a small
optimization to precompute the value of the module symbol instead of
checking it all the time.
Andrew Morton [Thu, 18 Mar 2004 23:00:00 +0000 (15:00 -0800)]
[PATCH] don't abuse empty_zero_page (x86)
From: Brian Gerst <bgerst@didntduck.org>
Don't abuse empty_zero_page as temporary storage for boot parameters and
command line. This is a holdover from the days before discardable init
sections.
Andrew Morton [Thu, 18 Mar 2004 22:59:41 +0000 (14:59 -0800)]
[PATCH] sysfs: pin kobjects to fix use-after-free crashes
From: Maneesh Soni <maneesh@in.ibm.com>
Fix a sysfs use-after-free crash. The problem we have is of the kobject
going away while we have a live dentry (the corresponding sysfs directory)
still pointing to it throuh d_fsdata pointer. The patch makes sure to keep
the kobject alive by taking a reference to it during the life-time of
corresponding dentry.
o The following pins the kobject when sysfs assigns dentry and inode to
the kobject. This ensures that kobject is alive during the life time of
the dentry and inode, and people holding ref. to the dentry can access the
kobject without any problems.
o The ref. taken for the kobject is released through dentry->d_op->d_iput()
call when the dentry ref. count drops to zero and it is being freed. For
this sysfs_dentry_operations is introduced.
For testing one has to run the following test on a SMP box:
1) Do insmod/rmmod "dummy.o" network driver in a forever loop.
2) Parallely do "find /sys/class/net | xargs cat" also in a forever loop.
Andrew Morton [Thu, 18 Mar 2004 22:59:31 +0000 (14:59 -0800)]
[PATCH] Fix dentry refcounting in sysfs_remove_group()
From: Maneesh Soni <maneesh@in.ibm.com>
The following patch fixes the dentry refcounting, during
sysfs_remove_group() and also adds the missing dput() for the "extra" ref
taken during sysfs_create() for the sub-directory dentry corresponding to
attribute group.
I have re-done the patch fixing the race between sysfs_remove_dir() and
dcache_readdir(). If you recall, sysfs_remove_dir(kobj) manipulates the
->d_subdirs list for the dentry corresponding to the sysfs directory being
removed. It can end up deleting the cursor dentry which is added to the
->d_subdirs list during a concurrent dcache_dir_open() ==> dcache_readdir()
for the same directory. And as a result dcache_readdir() can loop for ever
holding dcache_lock.
The earlier patch which was included in -mm1 created problems which
resulted in list_del() BUG hits in prune_dcache(). The reason I think is
that in the main loop in sysfs_remove_dir(), dcache_lock is dropped and
re-acquired, and this could result in inconsistent ->d_subdirs list and
prune_dcache() may try to delete an already deleted dentry. I have
corrected this in the new patch as below.
I could do sysfs_remove_dir() more neatly on sysfs backing store patch set
as there I don't use the ->d_subdirs list. Instead the list of children
sysfs_dirent works out well. But untill sysfs backing store patch is
picked up the existing code suffer from this race. This can be easily
tested by running following two loops on a SMP box
# while true; do insmod drivers/net/dummy.ko; rmmod dummy; done
# while true; do find /sys/class/net > /dev/null; done
o This patch fixes sysfs_remove_dir race with dcache_readdir. There is
no need for sysfs_remove_dir to modify the d_subdirs list for the
directory being deleted as it is taken care in the final dput. Modifying
this list results in inconsistent d_subdirs list and causes infinite loop
in concurrently occurring dcache_readdir.
o The main loop is restarted every time, dcache_lock is re-acquired in
order to maintain consistency.
Andrew Morton [Thu, 18 Mar 2004 22:59:02 +0000 (14:59 -0800)]
[PATCH] ppc64: Fix POWER3 TCE allocation
From: Anton Blanchard <anton@samba.org>
- Fix for machines with 3GB IO holes (eg nighthawk).
- Increase the maximum number of PHBs and warn if we exceed this (we used
to walk off the end of the array)
- Only allocate an 8MB TCE table on POWER4
Andrew Morton [Thu, 18 Mar 2004 22:58:53 +0000 (14:58 -0800)]
[PATCH] ppc64: Fix SLB reload bug
From: Paul Mackerras <paulus@samba.org>
Recently we found a particularly nasty bug in the segment handling in the
ppc64 kernel. It would only happen rarely under heavy load, but when it
did the machine would lock up with the whole of memory filled with
exception stack frames.
The primary cause was that we were losing the translation for the kernel
stack from the SLB, but we still had it in the ERAT for a while longer.
Now, there is a critical region in various exception exit paths where we
have loaded the SRR0 and SRR1 registers from GPRs and we are loading those
GPRs and the stack pointer from the exception frame on the kernel stack.
If we lose the ERAT entry for the kernel stack in that region, we take an
SLB miss on the next access to the kernel stack. Taking the exception
overwrites the values we have put into SRR0 and SRR1, which means we lose
state. In fact we ended up repeating that last section of the exception
exit path, but using the user stack pointer this time. That caused another
exception (or if it didn't, we loaded a new value from the user stack and
then went around and tried to use that). And it spiralled downwards from
there.
The patch below fixes the primary problem by making sure that we really
never cast out the SLB entry for the kernel stack. It also improves
debuggability in case anything like this happens again by:
- In our exception exit paths, we now check whether the RI bit in the
SRR1 value is 0. We already set the RI bit to 0 before starting the
critical region, but we never checked it. Now, if we do ever get an
exception in one of the critical regions, we will detect it before
returning to the critical region, and instead we will print a nasty
message and oops.
- In the exception entry code, we now check that the kernel stack pointer
value we're about to use isn't a userspace address. If it is, we print a
nasty message and oops.
This has been tested on G5 and pSeries (both with and without hypervisor)
and compile-tested on iSeries.
Andrew Morton [Thu, 18 Mar 2004 22:58:43 +0000 (14:58 -0800)]
[PATCH] ppc64: Add numa=off command line option
From: Anton Blanchard <anton@samba.org>
Add numa=off command line option to disable NUMA support at runtime.
Useful if there are issues with our parsing of the NUMA toplogy or for
testing NUMA gains.
Jaroslav Kysela [Thu, 18 Mar 2004 13:18:16 +0000 (14:18 +0100)]
ALSA CVS update - Jaroslav Kysela <perex@suse.cz>
USB generic driver
Returned back get_iface() macro for quirks
Removed extra variable to avoid warning
Jaroslav Kysela [Thu, 18 Mar 2004 12:16:42 +0000 (13:16 +0100)]
ALSA CVS update - Takashi Iwai <tiwai@suse.de>
au88x0 driver
Manuel Jander <mjander@elo.utfsm.cl>:
clean up and small bugfixes, the routing code fix for multiple streams.
Randy Dunlap [Thu, 18 Mar 2004 12:10:53 +0000 (07:10 -0500)]
[PATCH] revert some netdev_priv() changes
These drivers don't use the usual/normal/typical netdevice->priv
storage, so converting them to use netdev_priv() was not the
right thing to do. Back to using dev->priv for them.