Andrew Morton [Thu, 3 Jun 2004 00:58:14 +0000 (17:58 -0700)]
[PATCH] ppc32: add "indirect" DCR access, pass 2
From: Matt Porter <mporter@kernel.crashing.org>
DCR number is encoded in mfdcr/mtdcr command itself and this prevents easy
DCR access when register number is not known on compile time. This patch
adds __mfdcr & __mtdcr helpers which use pre-generated mfdcr/mtdcr
sequences for all possible DCR numbers. We also use GCC extension
__builtin_constant_p to optimize cases when DCR number is in fact known
during compilation.
Signed-off-by: Eugene Surovegin <ebs@ebshome.net> Signed-off-by: Matt Porter <mporter@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 00:58:03 +0000 (17:58 -0700)]
[PATCH] shrink_all_memory() fixes
- Off-by-one in balance_pgdat means that we're not scanning the zones all
the way down to priority=0.
- Always set zone->temp_priority in shrink_caches(). I'm not sure why I had
the `if (zone->free_pages < zone->pages_high)' test in there, but it's
preventing us from setting ->prev_priority correctly on the
try_to_free_pages() path.
- Set zone->prev_priority to the current priority if it's currently a
"lower" priority. This allows us to build up the pressure on mapped pages
on the first scanning pass rather than only on successive passes.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
The best fix for this is to visit all ram-backed filesystems and give them a
no-op a_ops.writepages. But baling out if the file is memory-backed is a
sufficient coverall and is how we handle this in __filemap_fdatawrite().
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
[PATCH] ide: remove useless /proc/ide/siimage from siimage.c
It only gives (not mapped in case of MMIO) DMA base addresses.
The same info is given during driver initialization (if BM-DMA is used)
or can be obtained from 'lspci -v' output (if MMIO-DMA is used).
- convert ->isa_ports into ->flags (IDEPCI_FLAG_ISA_PORTS)
- add IDEPCI_FLAG_{OBS_FORCE_PDC,FORCE_MASTER} flags
and use them in setup-pci.c
- use struct pci_dev ->vendor and ->device fields directly
in generic.c and serverworks.c
- remove no longer needed debug checks (dev->device != d->device)
- remove ->vendor and ->device fields from ide_pci_device_t
- misc cleanups
The ->tf_load and ->exec_command driver hooks were changed to assume
that PIO was the only type of taskfile ever delivered to these functions.
This will be true... in the future, but not today. In other drivers
this change was not needed, but Promise executes commands differently
due to its "ATA packet" hardware features, so the Promise drivers need
this change reverted.
Diagnosis and initial fix by Brad Campbell <brad@wasp.net.au>
The attached patch updates generic HDLC:
- fixed some carrier-related problems (Cisco HDLC and FR links could
report valid link when no carrier was detected at startup).
- fixed kbuild problems with wanxl firmware (building kernel in separate
tree). $(src)/wanxlfw.inc is now wanxlfw.inc_shipped.
Paul Mackerras [Wed, 2 Jun 2004 12:14:29 +0000 (08:14 -0400)]
[PATCH] ppp ldisc close deadlock prevention
Jeff Garzik writes:
> So what was the resolution of this?
This patch is what we want. We don't in fact need to do the read
lock, only the write lock, which is what the original patch did.
However, we need to do it in ppp_synctty.c as well as ppp_async.c.
Thanks to John K Luebs <jkluebs@luebsphoto.com> for pointing out the
problem.
The proper fix is _not_ NET_ETHERNET or default twiddling,
but better overall organization of the ethernet driver selection,
which would include not only CONFIG_NET_GIGE but other options as well.
Reverted back to old behavior until a full and complete solution
appears (and people like it, of course).
* islpci_eth.[c,h], islpci_dev.[c,h], isl_ioctl.[c,h] : added
support for avs header in monitor mode. Based on the work of
Antonio Eugenio Burriel <aeb@ryanstudios.com>. Unified packets
header (rfmon_header and rx_annex) for iwspy.
* oid_mgt.[c,h] : added type to oids. New functions :
oid_cpu_to_le(), mgt_le_to_cpu() and mgt_response_to_str().
* isl_ioctl.c : use private sub-ioctls. Added a
bunch of private sub-ioctls. Removed the le??_to_cpu and
cpu_to_le??. Give the error code when sending wireless
events.
Herbert Xu [Wed, 2 Jun 2004 11:48:29 +0000 (07:48 -0400)]
[PATCH] Check cmd in plip_ioctl
I received a bug report that a PLIP interface was incorrectly identified
as wireless because plip_ioctl did not check what the value of cmd is
before processing the request.
Jeremy Kerr [Wed, 2 Jun 2004 00:18:12 +0000 (17:18 -0700)]
[PATCH] Fix signal race during process exit
Fix a race identified by Jeremy Kerr <jeremy@redfishsoftware.com.au>: if
update_process_times() decides to deliver a signal due to process timer
expiry, it can race with __exit_sighand()'s freeing of task->sighand.
Fix that by clearing the per-process timer state in exit_notify(), while under
local_irq_disable() and under tasklist_lock. tasklist_lock provides exclusion
wrt release_task()'s freeing of task->sighand and local_irq_disable() provides
exclusion wrt update_process_times()'s inspection of the per-process timer
state.
We also need to deal with the send_sig() calls in do_process_times() by
setting rlim_cur to RLIM_INFINITY.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
David S. Miller [Tue, 1 Jun 2004 14:43:05 +0000 (07:43 -0700)]
[SPARC64]: Compat syscall overhaul.
1) Make syscall entry zero-extend all arguments.
2) Sign extend those needed in sys32.S
3) Kill the A() AA() macros, replace with compat_ptr() et al.
in the for_each_cpu_mask() loop we specifically check for each CPU in
the target group to be idle - so push_cpu's runqueue == busiest [==
current runqueue] cannot be true because the current CPU is not idle, we
are running in the migration thread ... But this is not a real problem,
load-balancing we do in a racy way to reduce overhead [and it's all
statistics anyway so absolute accuracy is impossible], and active
balancing itself is somewhat racy due to the migration-thread wakeup
(and the active_balance flag) going outside the runqueue locks [for
similar reasons].
so it all looks quite plausible - the normal SMP boxes dont trigger it,
but Bjorn's 128-CPU setup with a non-trivial domain hiearachy triggers
it.
Bjorn Helgaas [Tue, 1 Jun 2004 06:40:59 +0000 (23:40 -0700)]
[PATCH] active_load_balance() deadlock
active_load_balance() looks susceptible to deadlock when busiest==rq.
Without the following patch, my 128-way box deadlocks consistently
during boot-time driver init.
Pádraig Brady [Tue, 1 Jun 2004 09:52:38 +0000 (11:52 +0200)]
[WATCHDOG] v2.6.6 w83627hf_wdt.c-patch
Add w83627hf_select_wd_register and w83627hf_unselect_wd_register.
Add w83627hf_init to fix initialization problem on certain motherboards.
Make ping and disable code return 0 (int) on success.
Extract set_heartbeat code to seperate function.
Herbert Xu [Tue, 1 Jun 2004 05:35:39 +0000 (22:35 -0700)]
[IPSEC]: Fix xfrm_tunnel leak.
Turns out that the IPIP tunnel used by IPCOMP states are only freed
if the IPCOMP state is deleted by xfrm_state_delete.
This is not the case for all states. For example, an immature IPCOMP
state that dies in add_sa will not go through xfrm_state_delete.
The following patch moves the delete_tunnel call into IPCOMP's
destructor. I think it makes more sense there as IPCOMP is the
only user of the tunnel anyway.
Dave Jones [Tue, 1 Jun 2004 19:10:55 +0000 (20:10 +0100)]
Merge delerium.codemonkey.org.uk:/mnt/nfs/neologic/bar/src/kernel/2.6/trees/bk-linus
into delerium.codemonkey.org.uk:/mnt/nfs/neologic/bar/src/kernel/2.6/trees/agpgart
Dave Jones [Tue, 1 Jun 2004 18:39:56 +0000 (19:39 +0100)]
[AGPGART] intel-agp: skip non-AGP devices
From: Matt Domsch.
The E7205 doesn't have an AGP header, so printing this message is
pretty much useless. Also make it KERN_WARNING as well, as it's
not really worthy of a KERN_ERR
Dave Jones [Tue, 1 Jun 2004 10:00:11 +0000 (11:00 +0100)]
[AGPGART] Make agp=off work again.
This option only worked for the amd64 driver.
On every other driver, the only thing it did was
make it not printk the banner on startup.
Dave Jones [Tue, 1 Jun 2004 09:50:18 +0000 (10:50 +0100)]
[AGPGART] Fix broken serverworks tlb flush routine.
This is horribly broken due to a jiffy wrap bug, we never get out of
the while loop, preventing booting on a kernel with this driver
compiled in. (See https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=124495)
The warning message there has never been reported in any bug report
that google can find, so I'm of the opinion that this driver is trying
to be too clever for its own good. Rip out the jiffies logic completely,
it should be totally unnecessary.
Andrew Morton [Tue, 1 Jun 2004 01:52:40 +0000 (18:52 -0700)]
[PATCH] radeonfb powerdown doesn't work
From: <fxkuehl@gmx.de>
When I switch the computer to standby with echo -n standby >
/sys/power/state the radeonfb driver tells me its suspending to state 1 but
the display does not get turned off. It turns out to be a small typo in
drivers/video/aty/radeon_pm.c.
(from http://bugme.osdl.org/show_bug.cgi?id=2758)
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:51:07 +0000 (18:51 -0700)]
[PATCH] Fix readahead handling in knfsd
From: NeilBrown <neilb@cse.unsw.edu.au>
The read-ahead structures were not being initialised properly, and were not
having the use-count decremented after use, making them fairly useless
(since Apr 2002!).
From: Colin Gibbs <colin@gibbsonline.net> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:49:51 +0000 (18:49 -0700)]
[PATCH] SECURITY_SELINUX depends on NET
From: Adrian Bunk <bunk@fs.tum.de>
LD .tmp_vmlinux1
security/built-in.o(.text+0x97e4): In function `selnl_notify':
: undefined reference to `alloc_skb'
security/built-in.o(.text+0x988a): In function `selnl_notify':
: undefined reference to `netlink_broadcast'
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:49:20 +0000 (18:49 -0700)]
[PATCH] Missing pop-off in arch/i386/kernel/acpi/wakeup.S
From: <gniibe@m17n.org>
There is a missing pop-off after call of acpi_enter_sleep_state. On
success, acpi_enter_sleep_state never returns, but on failure, it will
cause kernel OOPS.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:48:47 +0000 (18:48 -0700)]
[PATCH] Add FUTEX_CMP_REQUEUE futex op
From: Jakub Jelinek <jakub@redhat.com>
FUTEX_REQUEUE operation has been added to the kernel mainly to improve
pthread_cond_broadcast which previously used FUTEX_WAKE INT_MAX op.
pthread_cond_broadcast releases internal condvar mutex before FUTEX_REQUEUE
operation, as otherwise the woken up thread most likely immediately sleeps
again on the internal condvar mutex until the broadcasting thread releases it.
Unfortunately this is racy and causes e.g.
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nptl/tst-cond16.c?rev=1.1&content-type=text/x-cvsweb-markup&cvsroot=glibc
to hang on SMP.
http://listman.redhat.com/archives/phil-list/2004-May/msg00023.html contains
analysis how the hang happens, the problem is if any thread does
pthread_cond_*wait in between releasing of the internal condvar mutex and
FUTEX_REQUEUE operation, a wrong thread might be awaken (and immediately go to
sleep again because it doesn't satisfy conditions for returning from
pthread_cond_*wait) while the right thread requeued on the associated mutex
and there would be nobody to wake that thread up.
The patch below extends FUTEX_REQUEUE operation with something FUTEX_WAIT
already uses:
FUTEX_CMP_REQUEUE is passed an additional argument which is the expected value
of *futex. Kernel then while holding the futex locks checks if *futex !=
expected and returns -EAGAIN in that case, while if it is equal, continues
with a normal FUTEX_REQUEUE operation. If the syscall returns -EAGAIN, NPTL
can fall back to FUTEX_WAKE INT_MAX operation which doesn't have this problem,
but is less efficient, while in the likely case that nobody hit the (small)
window the efficient FUTEX_REQUEUE operation is used.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:48:36 +0000 (18:48 -0700)]
[PATCH] Add watchdog timer to iseries_veth driver
From: David Gibson <david@gibson.dropbear.id.au>
Currently the iSeries virtual ethernet driver has no Tx watchdog timer.
This makes it vulnerable to clagging up if the other end of connection is
misbehaving - in particular if it is not giving timely hypervisor level
acks to our data frams.
This patch adds a watchdog timer which resets the connection to any lpar we
seem to be having trouble sending to. With any luck the other end might
behave better after the reset. If not, this will at least unclag the queue
for a while so we can keep talking to the lpars which are behaving
correctly.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:48:25 +0000 (18:48 -0700)]
[PATCH] ppc64: iseries bolted SLB fix
From: Anton Blanchard <anton@samba.org>
Legacy iseries has problems with the bolted vmalloc patch. This patch
disables the optimisation on iseries and creates a slb_add_bolted helper
function.
Also, while we require all SLB entries to be context switched, we werent
informing the iseries hypervisor.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:48:14 +0000 (18:48 -0700)]
[PATCH] ppc64: SLB accounting fix
From: Anton Blanchard <anton@samba.org>
Even though we have a variable containing the number of entries in the SLB,
we hardwire the value at boot. We also dont use the variable in the head.S
fastpath handler.
This patch removes it.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:48:03 +0000 (18:48 -0700)]
[PATCH] ppc64: bolt first vmalloc segment into SLB
From: Anton Blanchard <anton@samba.org>
Based on some profiles we noticed the first vmalloc region was being
continually cast out and replaced. All modules end up there so it is one
of our hottest segments.
This patch bolts the vmalloc region into the second segment. SLB misses on
an NFS benchmark were reduced by about 10% with this patch.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:47:52 +0000 (18:47 -0700)]
[PATCH] ppc64: reset iseries progress indicator on boot
From: Anton Blanchard <anton@samba.org>
Reset the progress indicator on iseries after boot.
Signed-off-by: John Engel <engel@us.ibm.com> Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This patch fixes the virtual ethernet driver so that it will not block the
transmit queue indefinitely. This patch appplies on top of the previous
patch from Rusty that removed skb_clone. There is one white space fix in
hte middle of this - I hope that doesn't offend :-).
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Tue, 1 Jun 2004 01:47:09 +0000 (18:47 -0700)]
[PATCH] ppc64: iSeries default config update
From: Stephen Rothwell <sfr@canb.auug.org.au>
This patch brings the iSeries default config up to date and changes some of
the options to what I use. These are more sensible options (at least in my
opinion :-)). Please apply.
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This fixes a couple of bugs in arch/ppc64/kernel/prom.c. We were
missing a couple of places where we needed to use RELOC(). I added the
RELOC in one case, and in the other, moved the variable that we were
accessing onto the stack (and reduced its size). (We use the variable
to get a property value, but we aren't interested in the value, just in
whether the property exists or not. Since we pass the size of the
variable to the OF getprop call, it won't overflow.) The effect of
missing the RELOCs would be that random memory locations get used on IBM
pSeries systems (possibly causing random boot failures).
The other thing that this does is add a linux,phandle property to each
node, containing the phandle for the node, which is the token that OF
uses to identify the node. Some nodes reference other nodes by means
of their phandle. Without the linux,phandle property, userspace code
looking at the OF device-tree image in /proc/device-tree has no way of
knowing which other node is being referenced.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>