Rusty Russell [Wed, 29 Oct 2003 09:35:41 +0000 (01:35 -0800)]
[PATCH] Fix for module initialization failure
Bug reported by Paul Mackerras: if a module parameter fails, we didn't
call module_arch_cleanup().
On x86 this was harmless (module_arch_cleanup() is a no-op), but on
other architectures like PPC this causes inconsistent data structures
and subsequent oopses.
Ivan Kokshaysky [Wed, 29 Oct 2003 07:20:38 +0000 (23:20 -0800)]
[PATCH] PCI: fix bug in pci_setup_bridge()
This bug prevents Alphas with older firmware from booting if there
is a card with PCI-PCI bridge that supports 32-bit IO.
This has happened on AS2100 with a quad-tulip card, for example:
- initially, the I/O window of 21152 bridge was 0x10000-0x10fff,
as set up by firmware;
- pci_setup_bridge() is going to change this, say, to 0xa000-0xafff:
first, it updates PCI_IO_BASE_UPPER16 and PCI_IO_LIMIT_UPPER16
registers, so that IO window temporarily is at 0x0000-0x0fff,
which effectively blocks up all legacy IO ports in the lower
4K range, such as serial, floppy, RTC an so on;
does debugging printk - machine dies here with recursive
machine checks as the serial console has gone.
Moving (or disabling) the debugging printk is not a solution -
there is possibility that timer interrupt (which might access RTC
ports) occurs between writes to lower and upper parts of the
base/limit registers.
The patch temporarily disables the IO window of the bridge by
setting PCI_IO_BASE_UPPER16 > PCI_IO_LIMIT_UPPER16 before doing
an update. It's safe, as we don't have any active IO behind
the bridge at this point. Also, it's a NOP for bridges with
16-bit-only IO.
Similar (but simpler, as we always clear upper 32 bits) fix
for 64-bit prefetchable MMIO range.
Dave Kleikamp [Wed, 29 Oct 2003 10:05:37 +0000 (04:05 -0600)]
JFS: remove racy, redundant call to block_invalidatepage
__invalidate_metapages references mp->page after after releasing the
meta_lock spinlock, without increasing the use count. This is racy and
unnecessary since setting the META_discard flag is sufficient.
block_invalidatepage() will be called when the metapage is released.
Arjan van de Ven [Wed, 29 Oct 2003 10:40:20 +0000 (05:40 -0500)]
[PATCH] fix starfire 64-bit b0rkage
(x >> 32) is undefined on a 32 bit integral variable in C; In contrast
(x >>16 >> 16) is fine (and gets optimized out to 0, while (x >> 32)
gets optimized out to a nop).
Andrew Morton [Wed, 29 Oct 2003 09:28:49 +0000 (04:28 -0500)]
[PATCH] initcall ordering fix for PNP NICs
From: "M.H.VanLeeuwen" <vanl@megsinet.net>
The level of isapnp_init was moved to after apci sometime ago. Since it is
now after net_dev_init, ISA PNP NICs fail to initialized at boot. This is
particularily problematic for NFS root filesystems like mine, or none
modular systems.
This fix allows ISA PNP NIC cards to work during net_dev_init, and still
leaves isapnp_init after apci_init.
[LLC]: when the user doesn't specifies a local address to connect, do an autobind
Other protocols do this as soon as they discover over what interface the
packet will be routed, but LLC isn't routable, so, to provide similar
semantics to the other protocols, I'm just binding it to the first interface
of the type specified, perhaps we'll need a tunable for this or some sort of
routing table done manually by the admin, later we'll see, for now this
allows an application like openssh, with patched getaddrinfo/getnameinfo to
use PF_LLC sockets with a very small patch.
Andrew Morton [Tue, 28 Oct 2003 23:13:31 +0000 (15:13 -0800)]
[PATCH] direct-io typo fix
From: Klaas de Waal <klaas.de.waal@hccnet.nl>
Bug in parameter of ZERO_PAGE macro in line 679 of fb/direct-io.c Parameter
dio->cur_user_address has to be dio->curr_user_address. This bug shows
when compling for MIPS little endian as target, not when compiling for X86.
Mike Phillips [Tue, 28 Oct 2003 23:09:57 +0000 (15:09 -0800)]
[PATCH] ibmtr_cs/ibmtr - get working again
Patch to get ibmtr_cs / ibmtr working again. A change went in a while back
I missed that killed it. Also fixed the timer to eliminate the
uninitialized timer error on close.
Stéphane Eranian [Mon, 27 Oct 2003 14:45:37 +0000 (06:45 -0800)]
[PATCH] ia64: fix 2 more perfmon2 bugs
Here is the minimal patch that fixes things that do not work and that
can be noticed fairly easily:
- remove a typo in pfm_check_task_state() which causes
PFM_READ_PMDS to fail when context is in PFM_MASKED state.
- fix a typo in perfmon_mcklinley.h when checking the value
combinations for when writing to PMC14. This could reject a
valid request to program PMC14.
Linus Torvalds [Mon, 27 Oct 2003 03:50:03 +0000 (19:50 -0800)]
Fix ZOMBIE race with self-reaping threads.
exit_notify() used to leave a window open when a thread
died that made the thread visible as a ZOMBIE even though
the thread reaped itself. This closes that window by marking
the thread DEAD within the tasklist_lock.
Kevin Corry [Mon, 27 Oct 2003 00:37:48 +0000 (16:37 -0800)]
[PATCH] Fix DM on top of raid
Force Device-Mapper to use PAGE_SIZE or smaller I/O when the underlying
device has a bvec_merge_fn routine registered. This will fix the
situation of Device-Mapper submitting I/Os to RAID-0 that span the
RAID-0 chunk boundaries.
Joe is working on a better solution that actually honors the MD
merge_bvec_fn routine. But this minimal change will fix the problem for
the time being.
Linus Torvalds [Mon, 27 Oct 2003 00:35:23 +0000 (16:35 -0800)]
Put the compiler barrier() on the right side of the preemption
enable on UP-PREEMPT.
Without this, the enable could "migrate" up into the critical
region (on SMP, the actual spinlock would act as an additional
barrier and PREEMPT was ok).
Rusty Russell [Sun, 26 Oct 2003 16:01:25 +0000 (08:01 -0800)]
[NETFILTER]: Fix ipchains oops in NAT
We updated ip_nat_setup_info to set the initialized flag and call
place_in_hashes, but *didn't* change the call in ip_fw_compat_masq.c
which also calls place_in_hashes() itself (again!). Result: corrupt
list, and next thing which lands in the same hash bucket goes boom.
Linus Torvalds [Sun, 26 Oct 2003 11:16:23 +0000 (03:16 -0800)]
Add a sticky "PF_DEAD" task flag to keep track of dead processes.
Use this to simplify 'finish_task_switch', but perhaps more
importantly we can use this to track down why some processes
seem to sometimes not die properly even after having been
marked as ZOMBIE. The "task->state" flags are too fluid to
allow that well.
Randolph Chung [Sun, 26 Oct 2003 06:27:04 +0000 (22:27 -0800)]
[PATCH] fix __div64_32 to do division properly
This fixes the generic __div64_32() to correctly handle divisions by
large 32-bit values (as used by nanosleep() and friends, for example).
It's a simple bit-at-a-time implementation with a reduction of the high
32-bits handled manually. Architectures that can do 64/32-bit divisions
in hardware should implement their own more efficient versions.
Andi Kleen [Sun, 26 Oct 2003 01:17:34 +0000 (17:17 -0800)]
[PATCH] Essential x86-64 updates
The most important part is that it makes x86-64 compile again.
Without that 2.6 users won't be very happy.
It also works around a bug that allowed every user program to reboot the
system on B stepping K8.
Also update to match some recent i386 fixes.
Full ChangeLog:
- Add acpi_pic_set_level_irq to make ACPI compile again
- Work around compat mode K8 bug in IRET exception handling
- Increase exception stack. The old 1k stack was too easy
to overflow (from Jim Paradis, changed by me)
- Replace safe_smp_processor_id with cpuid (needed for above)
- When there is only one node always enable fake_node mode
- Merge with i386 (NTP gettimeofday monoticity fix, irq nr_vectors change)
- Fix compile problem for UP kernels in time/cpufreq
- Set all nodes online at bootup
- Define node_to_cpumask correctly