Russell King [Thu, 3 Jun 2004 18:01:25 +0000 (19:01 +0100)]
[ARM] Don't include lubbock.h in asm/arch/hardware.h
Since asm/arch/hardware.h is included (indirectly) by most kernel
files, we don't want all these files depending on the individual
machine support files, especially as only five files really require
the header.
Instead, explicitly include lubbock.h into files as necessary.
Paul Mackerras [Thu, 3 Jun 2004 08:06:05 +0000 (01:06 -0700)]
[PATCH] ppc32: Fix locks.c properly this time
When I moved the exports into arch/ppc/lib/locks.c, I forgot to
include module.h, so it doesn't compile (with CONFIG_SMP +
CONFIG_SPINLOCK_DEBUG). This patch fixes it.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Thu, 3 Jun 2004 01:22:18 +0000 (18:22 -0700)]
[PATCH] ppc32: Reduce WARN_ON(0) to nothing
The last patch I sent means that we have WARN_ON(0) in a couple of
places when CONFIG_PREEMPT=n. This patch makes that reduce to
nothing (rather than a conditional trap on a 0 value), and also makes
BUG_ON(0) reduce to nothing for completeness.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Thu, 3 Jun 2004 01:22:08 +0000 (18:22 -0700)]
[PATCH] ppc32: Fix preemptible check
Ben H added a check in a couple of places to make sure that we had
preemption disabled when we call enable_kernel_{fp,altivec}.
Unfortunately the check he used trips in the case when
CONFIG_PREEMPT=n. This patch fixes it by defining a preemptible()
macro (which reduces to 0 when CONFIG_PREEMPT=n) and doing
WARN_ON(preemptible()).
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Thu, 3 Jun 2004 01:21:57 +0000 (18:21 -0700)]
[PATCH] ppc32: Make ppc32 PCI code more robust
The main thrust of this patch is to make the ppc32 PCI code more
robust by checking for bus->resource[] being NULL before using it. We
can legitimately get elements of bus->resource being NULL and I have
actually hit that on some machines. This patch also allows resources
starting at 0 to be accepted as assigned (we can and do get PCI
resources starting at 0 in I/O space on PPC machines) and provides a
sensible default for the case where Open Firmware doesn't give us a
bus-range property for a PCI bridge.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Thu, 3 Jun 2004 01:21:47 +0000 (18:21 -0700)]
[PATCH] ppc32: Use -fPIC instead of -mrelocatable-lib
The ppc32 boot code has a couple of files that are executed very early
on before the kernel is mapped at the address it is linked at. We
have been using -mrelocatable-lib to compile these files, but
apparently -mrelocatable-lib is deprecated and the gcc developers are
threatening to remove it. In fact the -fPIC flag does what we need.
This patch changes -mrelocatable-lib to -fPIC.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Thu, 3 Jun 2004 01:21:36 +0000 (18:21 -0700)]
[PATCH] ppc32: Suppress bogus info in /proc/ppc_htab on 64-bit cpus
In the ppc32 kernel, we have a /proc/ppc_htab file that trawls through
the MMU hash table and prints various statistics on it such as percent
occupancy. However, the hash table entry format is different on
64-bit cpus (POWER3, G5) which the ppc32 kernel does support (in
32-bit mode).
This patch disables the scanning of the MMU hash table and printing of
the statistics that we get from it on 64-bit cpus. Since the
statistics are only for interest, and the ppc32 kernel is being used
less and less on 64-bit cpus now that the ppc64 kernel is in
reasonable shape, I didn't think it worth while to add code to deal
with the 64-bit HPTE format.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Thu, 3 Jun 2004 01:21:26 +0000 (18:21 -0700)]
[PATCH] ppc32: Don't synchronize in disable_irq() if no handler
This patch is the ppc32 counterpart to a fix that went into
arch/i386/kernel/irq.c last October. The bug was noted by Al Viro: if
no handler exists, and we have IRQ_INPROGRESS set because of an
earlier irq that got through, synchronize_irq() will end up waiting
forever.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Thu, 3 Jun 2004 01:21:15 +0000 (18:21 -0700)]
[PATCH] ppc32: Add _raw_write_trylock
I tried compiling a PPC32 kernel with PREEMPT + SMP and it failed
because we didn't have a _raw_write_trylock. This patch adds
_raw_write_trylock, moves the exports of _raw_*lock from
arch/ppc/kernel/ppc_ksyms.c to arch/ppc/lib/locks.c, and makes
__spin_trylock static since it is only used in locks.c.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:05:20 +0000 (18:05 -0700)]
[PATCH] direct-io invalidation fix
clean_blockdev_aliases() is using the wrong thing to work out how many
filesystem blocks should be invalidated. It invalidates too many, which can
cause live fs metadata buffers to be invalidated when they are pending
writeout. It's a filesystem-wrecker, although seems very hard to hit.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:05:09 +0000 (18:05 -0700)]
[PATCH] bug in sys_io_setup
From: Jerzy Szczepkowski <js189202@zodiac.mimuw.edu.pl>
There is a bug in sys_io_setup().
If ioctx_alloc() succeeds and put_user() fails io_destroy() is called.
io_destroy() assumes that ioctx->users >= 2 (if context is alive) and calls
put_ioctx twice, while in this sequence ioctx->users == 1.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:04:58 +0000 (18:04 -0700)]
[PATCH] Use decimal instead of hex for EDD values
From: "Patrick J. LoPresti" <patl@users.sourceforge.net>
This patch changes default_cylinders, default_heads,
default_sectors_per_track, legacy_max_cylinder, legacy_max_head,
legacy_sectors_per_track, and sectors to decimal.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:04:36 +0000 (18:04 -0700)]
[PATCH] use c99 struct initializer in hotcpu_notifier
From: Nathan Lynch <nathanl@austin.ibm.com>
The hotcpu_notifier macro does not properly record the given priority in
the notifier block. This causes trouble only for callers which specify a
non-zero priority, of which there are none (yet).
Andrew Morton [Thu, 3 Jun 2004 01:04:25 +0000 (18:04 -0700)]
[PATCH] ext3_orphan_del may double-decrement bh->b_count
From: Jeff Mahoney <jeffm@suse.com>
Chris Mason and I ran across this one while hunting down another bug.
If ext3_mark_iloc_dirty() fails in ext3_orphan_del() on the outer buffer,
bh->b_count will be decremented twice. ext3_mark_iloc_dirty() will brelse
the buffer, even on error. ext3_orphan_del() is explicity brelse'ing the
buffer on error. Prior to calling ext3_mark_iloc_dirty(), this is the
correct behavior.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:03:52 +0000 (18:03 -0700)]
[PATCH] quota: fix for old quota format
From: Jan Kara <jack@ucw.cz>
Fix a problem in the old quota format when we tried to read quota
information after the end of quota file (that is correct as it might a user
with sufficiently large UID which has no limits or usage).
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:03:41 +0000 (18:03 -0700)]
[PATCH] quota: fix writing of quota info
From: Jan Kara <jack@ucw.cz>
Fixes a problem with some quota operations not writing the quota info they
changed which could later cause that some transaction to use more buffers
than it had reserved or it could cause corrupted quota files when the
system was rebooted at the right time.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:03:27 +0000 (18:03 -0700)]
[PATCH] s390: network device driver
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
Network driver changes:
- iucv: Fix special case of a "Connection Pending" interrupt within
iucv_do_int.
- netiucv: Revoke broken iucvMagic change for more than one connection.
- qeth: Fix string parsing in notifier_register attribute function.
- qeth: Add code for socket ioctl SIOC_QETH_GET_CARD_TYPE.
- qeth: Fix debug log entry and buffer copy in qeth_snmp_command_cb.
- qeth: Fix race on qeth_dbf_txt_buf.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:03:07 +0000 (18:03 -0700)]
[PATCH] s390: block device driver
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
block device driver changes:
- dasd: Fix diag discipline if it is loaded as a module.
- dcssblk: Replace r/w lock with r/w semaphore to be able to call
device_register inside a critical section.
- dcssblk: Fix error handling in write function for dcss "add" attribute.
- xpram & dcssblk: Fix sanity check for sector number.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:02:51 +0000 (18:02 -0700)]
[PATCH] s390: common i/o layer
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
Common i/o layer changes:
- qdio: Lose the adapter lock for thin interrupts to improve performance
and do unregister of the adapter interrupt handler with rcu.
- ccwgroup: Fix error handling when creating a ccwgroup device.
- Convert the slow crw kernel thread to a single threaded workqueue.
- Use the slow crw workqueue to unregister a subchannel after it was
found not operational to serialize it with other possible unregister/
register events coming in via machine checks.
- Trigger a rescan of the css via the slow path if a missing channel path
is found in __recover_lost_chpids.
- Use saner default levels for the debug feature, add some debugging code.
- Remove request_irq and free_irq stubs.
- Remove bogus inlines.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:02:35 +0000 (18:02 -0700)]
[PATCH] s390: core
From: Martin Schwidefsky <schwidefsky@de.ibm.com>
s390 core changes:
- Make use of the ipte instruction for ptep_set_access_flags
- Fix atomic64_inc_and_test primitive as well.
- Fix return type handler for __copy_in_user.
- New default configuration.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Currently the hugepage code stores the hugepage destructor in the mapping
field of the second of the compound pages. However, this field is never
cleared again, which causes tracebacks from free_pages_check() if the
hugepage is later destroyed by reducing the number in
/proc/sys/vm/nr_hugepages. This patch fixes the bug by clearing the
mapping field when the hugepage is freed.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:02:02 +0000 (18:02 -0700)]
[PATCH] direct-io hole fix
From: Chris Mason <mason@suse.com>
When filling holes via DIRECT_IO, we fall back to normal buffered io. For
this to work properly, the direct io funcs have to return a value of zero to
the file write functions, so the file write functions know where to start
writing.
In some cases, dio->result was getting returned by direct_io_worker, and that
wasn't always zero, causing some data not to be written.
From: <akpm@osdl.org>:
- Simplify things by setting `ret' later on, fix up subsequent damage to the
dio_complete() args.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:01:46 +0000 (18:01 -0700)]
[PATCH] hugetlbpage msync() fix
From: David Gibson <david@gibson.dropbear.id.au>
Currently, calling msync() on a hugepage area will cause the kernel to blow
up with a bad_page() (at least on ppc64, but I think the problem will exist
on other archs too). The msync path attempts to walk pagetables which may
not be there, or may have an unusual layout for hugepages.
Lucikly we shouldn't need to do anything for an msync on hugetlbfs beyond
flushing the cache, so this patch should be sufficient to fix the problem.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
start_jiffies was not respected by set_timeout(), which reread jiffies
instead of respecting what read_events() passed it. This difference can be
significant, particularly if the calling process slept during the
copy_to_user() operation in read_events(). To correct this, this patch
teaches it to respect its argument, with the additional bonus of converting
it to use timespec_to_jiffies() instead of open-coding it.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 01:01:02 +0000 (18:01 -0700)]
[PATCH] use const in time.h unit conversion functions
From: William Lee Irwin III <wli@holomorphy.com>
The time conversion functions may have const args, which is in fact useful
for when they are passed const variables as arguments so as to avoid
discarding qualifiers from pointer types warnings. This is a preparatory
cleanup for a minor aio bugfix.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 00:59:43 +0000 (17:59 -0700)]
[PATCH] sched: balance-on-exec fix
From: Jack Steiner <steiner@sgi.com>
It looks like the call to sched_balance_exec() from do_execve() is in the
wrong spot. The code calls sched_balance_exec() before determining whether
"filename" actually exists.
In many cases, users have several entries in $PATH. If a full path name is
not specified on the 'exec" call, the library code iterates thru the files
in the PATH list until it finds the program. This can result is numerous
migrations of the parent process before the program is actually found.
This patch changes security_context_to_sid to check the length of the
processed security context against the full length of the provided context,
rejecting any further data.
Signed-off-by: Stephen Smalley <sds@epoch.ncsc.mil> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 00:59:10 +0000 (17:59 -0700)]
[PATCH] Add reference_init.pl to `make buildcheck' target
`make buildcheck' only checks for calls to linker discarded sections,
reference_init checks for calls to sections discarded at run time, init was
cloned from discarded. They are separate because the linker detects the
discarded case and I did not want to confuse users with messages about init
text/data while they were fixing the linker errors.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 00:58:58 +0000 (17:58 -0700)]
[PATCH] partition table validity checking
From: Andries Brouwer <Andries.Brouwer@cwi.nl>
The patch examines a putative partition table, and if that doesnt look like a
valid partition table it goes away again.
Some devices have partition tables (and there are many styles of such), some
don't. Traditionally fixed disks have one, floppies don't. Nobody knows what
happens with ZIP disks, USB sticks and other such things. Both the DOS-type
partition table, and the "big floppy" whole disk FAT filesystem are common.
It is undesirable for the kernel to detect partitions where there are none.
This leads to great confusion, sometimes to kernel crashes.
In the particular case of DOS-type partition tables a partition entry has a
1-byte field boot_ind that traditionally is 0x80 for the boot partition and 0
for the other three primary partitions. Linux does not use this field, and
one sometimes sees tables with all four entries zero.
The patch tells the kernel not to think that something is a valid DOS-type
partition table when a value other than 0 or 0x80 is encountered. I think it
is a fairly safe change: I do not know of any fdisk-type program that will
write other values there.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrew Morton [Thu, 3 Jun 2004 00:58:47 +0000 (17:58 -0700)]
[PATCH] ppc64 gives up too quickly on hotplugged cpu
From: Nathan Lynch <nathanl@austin.ibm.com>
On some systems it can take a hotplugged cpu much longer to come up than it
would at boot. If the cpu comes up after we've given up on it, it tends to
die in its first attempt to kmem_cache_alloc (uninitialized percpu data, I
imagine).
In my experimentation I haven't seen a processor take more than one second
to become available; the patch waits five seconds just to be safe.
Andrew Morton [Thu, 3 Jun 2004 00:58:36 +0000 (17:58 -0700)]
[PATCH] ppc64: update info about available iseries_veth interfaces
From: Olaf Hering <olh@suse.de>
/proc/iSeries/config contains now the number of configured virtual ethernet
adapters. AVAILABLE_VETH should only indicate if there is at least one
interface available, iseries_veth must be loaded in this case.
Printing the entire map will give installers some hints about what
interface numbers will appear and how the MAC address may look like.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
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.