Russell King [Tue, 19 Oct 2004 20:36:16 +0000 (21:36 +0100)]
[ARM] Add generic RTC implementation.
This provides a number of helper functions and data structures
for RTC implementations to make use of, including a standard
implemention for /proc/driver/rtc and the rtc miscdevice. It
supports runtime registration of RTC timekeeping sources.
Russell King [Tue, 19 Oct 2004 19:02:21 +0000 (20:02 +0100)]
[ARM] Sanitise Footbridge machine class.
Footbridge was suffering from a little lack of care and attention;
it still had the nasty arch.c file with all the associated #ifdef
gross-ness that entailed.
Re-jig footbridge support so that each machine type contains all
the necessary support code, with a separate common implementation
which they all share.
Russell King [Tue, 19 Oct 2004 17:53:05 +0000 (18:53 +0100)]
[ARM] Rehash iwmmxt signal handling.
In the near future, VFP will want to save state onto the user stack.
Therefore, separate out the iwmmxt specific parts, and implement
a generic "safe copy to user space using random CPU instructions".
This is necessary because iwmmxt and VFP both use special CPU
instructions to load and/or save their state.
Ingo Molnar [Mon, 18 Oct 2004 16:12:06 +0000 (09:12 -0700)]
[PATCH] fix & clean up zombie/dead task handling & preemption
This patch fixes all the preempt-after-task->state-is-TASK_DEAD problems we
had. Right now, the moment procfs does a down() that sleeps in
proc_pid_flush() [it could] our TASK_DEAD state is zapped and we might be
back to TASK_RUNNING to and we trigger this assert:
schedule();
BUG();
/* Avoid "noreturn function does return". */
for (;;) ;
I have split out TASK_ZOMBIE and TASK_DEAD into a separate p->exit_state
field, to allow the detaching of exit-signal/parent/wait-handling from
descheduling a dead task. Dead-task freeing is done via PF_DEAD.
Tested the patch on x86 SMP and UP, but all architectures should work
fine.
Ingo Molnar [Mon, 18 Oct 2004 16:11:52 +0000 (09:11 -0700)]
[PATCH] sched: fix SCHED_SMT & numa=fake=2 lockup
This patch fixes an interaction between the numa=fake=<domains> feature,
the domain setup code and cpu_siblings_map[]. The bug leads to a bootup
crash when using numa=fake=2 on a 2-way/4-way SMP+HT box.
When SCHED_SMT is turned on the domains-setup code relies on siblings not
spanning multiple domains (which makes perfect sense). But numa=fake=2
creates an assymetric 1101/0010 splitup between CPUs, which results in two
siblings being on different nodes.
The patch adds a check_siblings_map() function that checks the sibling maps
and fixes them up if they violate this rule. (it also prints a warning in
that case.)
The patch also turns SCHED_DOMAIN_DEBUG back on - had this been enabled
we'd have noticed this bug much earlier.
From: Badari Pulavarty <pbadari@us.ibm.com>
arch/x86_64/mm/numa.c: In function `numa_setup':
arch/x86_64/mm/numa.c:332: error: `numa_fake' undeclared (first use in this function)
arch/x86_64/mm/numa.c:332: error: (Each undeclared identifier is reported only once
arch/x86_64/mm/numa.c:332: error: for each function it appears in.)
Matthew Dobson [Mon, 18 Oct 2004 16:11:27 +0000 (09:11 -0700)]
[PATCH] sched_domains: Make SD_NODE_INIT per-arch #2
Here's yet another version of a patch to implement per-arch SD_*_INITs.
This follows the same basic idea of my last patch, but
1) defines an arch-specific SD_NODE_INIT for the 4 NUMA arches (i386,
x86_64, IA64 & PPC64),
2) defines *default* SD_CPU_INIT & SD_SIBLING_INIT for *all* arches,
with the possibility of them being overridden by simply defining an
arch-specific version in include/asm/topology.h.
The motivation behind the third version of this patch is that Martin feels
that there should be no "default" NUMA initializer because NUMA
characteristics are *very* arch/platform specific, and hence a "default"
NUMA initializer can only lead to confusion. I agree with most of that,
but don't quite see as much harm in having a default as he does.
Nevertheless, to keep him quiet, I've run up this version of the patch.
Martin, please run this through your magic test suite and make sure I
didn't break anything trivial.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Peter Williams [Mon, 18 Oct 2004 16:11:14 +0000 (09:11 -0700)]
[PATCH] CPU Scheduler: fix potential error in runqueue nr_uninterruptible count
Problem:
In the function try_to_wake_up(), when the runqueue's nr_uninterruptible
field is decremented it's possible (on SMP systems) that the pointer no
longer points to the runqueue that the task being woken was on when it went
to sleep. This would cause the wrong runqueue's field to be decremented
and the correct one tp remain unchanged.
Fix:
Save a pointer to the old runqueue at the beginning of the function and use
it when decrementing nr_uninterruptible.
Signed-off-by: Peter Williams <pwil3058@bigpond.net.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Mon, 18 Oct 2004 16:10:50 +0000 (09:10 -0700)]
[PATCH] sched: fixes for ia64 domain setup
Still having some trouble with ia64 domain setup on the Altixes. Jesse
hasn't had much time to look into it, and I'm lacking an Altix, so I'm not
sure if this is right or not...
Anyway, it again does the right thing on the NUMAQ, and fixes some real
bugs, so can you include it please?
* Increase SD_NODES_PER_DOMAIN to 6 from 4 to better match Altix's
topology. A setting of 4 will include this node, the other one
in the brick, and the 2 nodes in the next closest brick, while 6
will catch 2 other bricks. Probably it could be increased even
more.
* Work correctly with sparse and not completely full node maps.
* Nasty typo fixed in find_next_best_node:
- val = node_distance(node, i);
+ val = node_distance(node, n);
* Ensure all nodes are themselves a member of their numa balancing
domain. This is more a precaution against creative implementations
of node_distance.. but it makes the setup easier to verify without
having to look at a table of node_distance's, which is possibly
generated at runtime.
So again, I'm not too sure if this will fix the Altix setup or not. But if
you do a release, it will surely be less broken than it was before.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Mon, 18 Oct 2004 16:09:48 +0000 (09:09 -0700)]
[PATCH] sched: IA64 add disjoint NUMA domain support
Implement disjoint NUMA domain setup for IA64 architecture. Most of the code
was what was ripped out of kernel/sched.c, which was written by Jesse Barnes
<jbarnes@sgi.com>. I fixed up the tricky NUMA groups initialistion.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Mon, 18 Oct 2004 16:09:35 +0000 (09:09 -0700)]
[PATCH] sched: make domain setup overridable
Allow sched domain setup to be overridden by arch code. This functionality
is needed again.
From: Paul Jackson <pj@sgi.com>
Builds of 2.6.9-rc1-mm5 ia64 NUMA configs fail, with many complaints that
SD_NODE_INIT is defined twice, in asm/processor.h and linux/sched.h.
I guess that the preprocessor conditionals were wrong when Nick added the
per-arch override ability again of SD_NODE_INIT were wrong. At least this
change lets me rebuild ia64 again.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Paul Jackson <pj@sgi.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Mon, 18 Oct 2004 16:09:10 +0000 (09:09 -0700)]
[PATCH] sched: sched add load balance flag
Introduce SD_LOAD_BALANCE flag for domains where we don't want to do load
balancing (so we don't have to set up meaningless spans and groups). Use this
for the initial dummy domain, and just leave isolated CPUs on the dummy
domain.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Mon, 18 Oct 2004 16:08:46 +0000 (09:08 -0700)]
[PATCH] sched: integrate cpu hotplug and sched domains
Register a cpu hotplug notifier which reinitializes the scheduler domains
hierarchy. The notifier temporarily attaches all running cpus to a "dummy"
domain (like we currently do during boot) to avoid balancing. It then calls
arch_init_sched_domains which rebuilds the "real" domains and reattaches the
cpus to them.
Also change __init attributes to __devinit where necessary.
Signed-off-by: Nathan Lynch <nathanl@austin.ibm.com>
Alterations from Nick Piggin:
* Detach all domains in CPU_UP|DOWN_PREPARE notifiers. Reinitialise and
reattach in CPU_ONLINE|DEAD|UP_CANCELED. This ensures the domains as
seen from the scheduler won't become out of synch with the cpu_online_map.
* This allows us to remove runtime cpu_online verifications. Do that.
* Dummy domains are __devinitdata.
* Remove the hackery in arch_init_sched_domains to work around the fact that
the domains used to work with cpu_possible maps, but node_to_cpumask returned
a cpu_online map.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Mon, 18 Oct 2004 16:08:34 +0000 (09:08 -0700)]
[PATCH] sched: add CPU_DOWN_PREPARE notifier
Add a CPU_DOWN_PREPARE hotplug CPU notifier. This is needed so we can dettach
all sched-domains before a CPU goes down, thus we can build domains from
online cpumasks, and not have to check for the possibility of a CPU coming up
or going down.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Nick Piggin [Mon, 18 Oct 2004 16:08:22 +0000 (09:08 -0700)]
[PATCH] sched: trivial sched changes
The following patches properly intergrate sched domains and cpu hotplug (using
Nathan's code), by having sched-domains *always* only represent online CPUs,
and having hotplug notifier to keep them up to date.
Then tackle Jesse's domain setup problem: the disjoint top-level domains were
completely broken. The group-list builder thingy simply can't handle distinct
sets of groups containing the same CPUs. The code is ugly and specific enough
that I'm re-introducing the arch overridable domains.
I doubt we'll get a proliferation of implementations, because the current
generic code can do the job for everyone but SGI. I'd rather take a look at
it again down the track if we need to rather than try to shoehorn this into
the generic code.
Nathan and I have tested the hotplug work. He's happy with it.
I've tested the disjoint domain stuff (copied it to i386 for the test), and it
does the right thing on the NUMAQ. I've asked Jesse to test it as well, but
it should be fine - maybe just help me out and run a test compile on ia64 ;)
This really gets sched domains into much better shape. Without further ado,
the patches.
This patch:
Make a definition static and slightly sanitize ifdefs.
Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
The xtime value may become incorrect when the update_wall_time(ticks)
function is called with "ticks" > 1. In such a case, the xtime variable is
updated multiple times inside the loop but it is normalized only once
outside of the loop.
This bug was reported at:
http://bugme.osdl.org/show_bug.cgi?id=3403
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jeff Mahoney [Mon, 18 Oct 2004 16:07:45 +0000 (09:07 -0700)]
[PATCH] ReiserFS: Add I/O error handling to journal operations
This patch allows ReiserFS to handle I/O errors in the journal (or journal
flush) where it would have previously panicked. The new behavior is to
mark the filesystem read-only, disallow new transactions to be started, and
to allow existing transactions to complete (though not to commit). The
resultant filesystem can be safely umounted, and checked via normal
mechanisms. As it is a journaling filesystem, the filesystem itself will
be in a similar state to the power being cut to the machine, once umounted.
Signed-off-by: Jeff Mahoney <jeffm@novell.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jeff Mahoney [Mon, 18 Oct 2004 16:07:32 +0000 (09:07 -0700)]
[PATCH] ReiserFS: Cleanup access of journal (cosmetic)
This patch cleans up fs/reiserfs/journal.c such that repeated uses of
SB_JOURNAL(p_s_sb) are removed in favor of a local journal variable. The
compiler won't care, and it makes the code much easier to read.
Signed-off-by: Jeff Mahoney <jeffm@novell.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jeff Mahoney [Mon, 18 Oct 2004 16:07:20 +0000 (09:07 -0700)]
[PATCH] ReiserFS: Cleanup internal use of bh macros
This patch cleans up ReiserFS's use of buffer head flags. All direct
access of BH_* are made into macro calls, and all reiserfs-specific BH_*
macro implementations have been removed and replaced with the BUFFER_FNS
implementations found in linux/buffer_head.h
Signed-off-by: Jeff Mahoney <jeffm@novell.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andreas Herrmann [Mon, 18 Oct 2004 16:06:06 +0000 (09:06 -0700)]
[PATCH] s390: zfcp host adapter
zfcp host adapter change:
- Return -EIO if wait_event_interruptible_timeout was interrupted.
- Reduce stack uage of zfcp_cfdc_dev_ioctl.
- Make zfcp_sg_list_[alloc,free] more consistent.
- Store driver version to zfcp_data structure.
- Add missing FSF states and make corresponding log messages consistent.
- Always wait for completion in zfcp_scsi_command_sync.
- Add Andreas to authors list.
- Add timeout for cfdc upload/download.
- Add support for temporary units (units not registered to the scsi stack).
- Allow sending of ELS commands to ports by their d_id.
- Increase port refcount while link test is running.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Since people are used to doing "make linux ARCH=um" and to use "linux" as
the kernel image, make it be an hard link to vmlinux. This should hurt the
less possible the users (actually nothing) while not slowing down the
build.
Acked-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Hirokazu Takata [Mon, 18 Oct 2004 16:05:18 +0000 (09:05 -0700)]
[PATCH] m32r: fix sys_tas system call for m32r
This patch fixes a sys_tas system call for m32r.
- This patch fixes an Oops at sys_tas() in case CONFIG_SMP && CONFIG_PREEMPT.
> Unable to handle kernel paging request at virtual address XXXXXXXX
It is because a page fault happens at the spin_locked region in sys_tas()
and in_atomic() checks preempt_count, but spin_lock() already counts up
the preemt_count.
arch/mm/fault.c:
137 /*
138 * If we're in an interrupt or have no user context or are runni
ng in an
139 * atomic region then we must not take the fault..
140 */
141 if (in_atomic() || !mm)
142 goto bad_area_nosemaphore;
- sys_tas() is used for user-level mutual exclusion for the m32r,
which is prepared to implement a linuxthreads library.
The above problem may be happened in a program, which uses
pthread_mutex_lock(), calls sys_tas().
The current m32r instruction set has no user-level locking
functions for mutual exclusion.
# I hope it will be fixed in the future...
- This patch fixes the problem by using _raw_spin_lock() instead of
spin_lock(). spin_lock() increments up preemt_count, on the contrary,
_raw_sping_lock() does not.
# I think this fix is just a temporary work around, and
# it is preferable to be rewrite to make it simpler by using
# asm() function or something...
* arch/m32r/kernel/sys_m32r.c:
- Fix sys_tas() for CONFIG_SMP && CONFIG_PREEMPT.
Hirokazu Takata [Mon, 18 Oct 2004 16:05:06 +0000 (09:05 -0700)]
[PATCH] m32r: SIO driver
Here is a patch to support the M32R SIO (serial IO) driver.
This driver supports the M32R serial ports.
- Supports two types M32R serial interfaces; M32R_SIO and M32R_PLDSIO.
- With SMP safeness.
Currently the M32R_PLDSIO serial interface, which is implemented on a PLD
on the M3T-M32700UT evaluation board, has slightly different specification
from the integrated peripheral SIO (M32R_SIO). Now we can select them by
CONFIG_ option.
It is a serial-core based driver, based on drivers/serial/8250.c. Any
comments or suggestions will be appreciated.
Hirokazu Takata [Mon, 18 Oct 2004 16:04:53 +0000 (09:04 -0700)]
[PATCH] m32r: AR camera driver
Here is a patch for the Renesas AR camera driver for m32r.
- AR (artificial retina) camera is newly supported.
AR camera module: Renesas M64278E-800, VGA(640x480 pixcels)
http://www.renesas.com/avs/resource/japan/jpn/pdf/assp/rjj01f0005_psmobile.pdf
This patch is required for S3 suspend-resume on noexec capable systems. On
these systems, we need to save and restore MSR_EFER during S3
suspend-resume.
Pavel Machek [Mon, 18 Oct 2004 16:03:14 +0000 (09:03 -0700)]
[PATCH] swsusp: add comments at critical places
apm.c needs save_processor_state and friends. Add a comment to keep people
from removing it. Describe a way to make swsusp work on non-PSE machines.
Document purpose of acpi_restore_state.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Randy Dunlap [Mon, 18 Oct 2004 16:02:50 +0000 (09:02 -0700)]
[PATCH] i386/io_apic init section fixups
Code section errors in i386/io_apic.c found by scripts/reference_init.pl.
Looks like they could cause problems for a few drivers or in a real hotplug
environment.
Error: ./arch/i386/kernel/io_apic.o .text refers to 000018ff R_386_PC32 .init.text
Error: ./arch/i386/kernel/io_apic.o .text refers to 00001967 R_386_PC32 .init.text
(as above thru {A}, then:)
IO_APIC_irq_trigger
irq_trigger
MPBIOS_trigger >> removing __init from this led to
needing to remove __init from
EISA_ELCR also.
Signed-off-by: Randy Dunlap <rddunlap@osdl.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Fix interaction between nosmp and pcibios_fixup_irqs().
When we boot with nosmp we dont have all the mptable info, so
IO_APIC_get_PCI_irq_vector() doesnt work and devices just end up getting a
wrong interrupt.
Suresh B. Siddha [Mon, 18 Oct 2004 16:02:26 +0000 (09:02 -0700)]
[PATCH] Disable SW irqbalance/irqaffinity for E7520/E7320/E7525 v2
As part of the workaround for the "Interrupt message re-ordering across hub
interface" errata (page #16 in
http://developer.intel.com/design/chipsets/specupdt/30288402.pdf), BIOS may
enable hardware IRQ balancing for E7520/E7320/E7525(revision ID 0x9 and
below) based platforms.
Add pci quirks to disable SW irqbalance/affinity on those platforms. Move
balanced_irq_init() to late_initcall so that kirqd will be started after
pci quirks.
Oleg Nesterov [Mon, 18 Oct 2004 16:02:14 +0000 (09:02 -0700)]
[PATCH] Fix show_trace() in irq context with CONFIG_4KSTACKS
- valid_stack_ptr() erroneously assumes that stack always lives in
task_struct->thread_info.
- the main loop in show_trace() does not recalc ebp after stack
switching. With CONFIG_FRAME_POINTER every call to print_context_stack()
will produce the same output.
With this patch, show_trace() does not use task argument in the main loop.
Instead, it converts stack to thread_info* context, and passes it to
print_context_stack() and (implicitly) to valid_stack_ptr().
valid_stack_ptr() now does bounds checking against proper context.
Some cache descriptors are missing from x86_64 table. So instead of
copying from i386 code, here is a patch to share the table between i386 and
x86_64.
Tom Rini [Mon, 18 Oct 2004 16:01:49 +0000 (09:01 -0700)]
[PATCH] sh: fix EMBEDDED_RAMDISK with O=
The following fixes EMBEDDED_RAMDISK to work with O=. The problem was that
we couldn't find the linker script, since we needed to specify the patch to
the source tree for it. I've tested this with the ramdisk set to both
'ramdisk.gz' and '../ramdisk.gz'.
Signed-off-by: Tom Rini <trini@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mundt [Mon, 18 Oct 2004 16:00:48 +0000 (09:00 -0700)]
[PATCH] sh: Broken-out CPU subtype probing
Previously we could do subtype parsing and cache configuration in the same
location.. but with the introduction of things like the SH7705 where we use
SH-3 style probing with SH-4 style caches, this is no longer the case. As
such, we move the probe code to a saner place.
Signed-off-by: Paul Mundt <paul.mundt@nokia.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mundt [Mon, 18 Oct 2004 16:00:10 +0000 (09:00 -0700)]
[PATCH] sh: cleanup + merge
This adds other random bits of sh cleanup. This includes Kconfig updates,
some exported symbols to satisfy module builds, cleanup of some whitespace
damage, some compile fixes, and some general header and mach-type cleanup.
Signed-off-by: Tom Rini <trini@kernel.crashing.org> Signed-off-by: Paul Mundt <paul.mundt@nokia.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mundt [Mon, 18 Oct 2004 15:59:19 +0000 (08:59 -0700)]
[PATCH] sh: SCBRR calculation fixes for early printk()
The early printk() code was using a fixed PCLK value that was only sane in the
SH7750 case. This updates the SCBRR value calculation to use
CONFIG_SH_PCLK_FREQ instead and thus works on other subtypes as well (tested
on SH4-202).
Signed-off-by: Paul Mundt <paul.mundt@nokia.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mundt [Mon, 18 Oct 2004 15:59:07 +0000 (08:59 -0700)]
[PATCH] sh: DMA API updates
This updates some of the sh DMA drivers and core API. Previously modules had
to register for the channels they were interested in, but now it's dealt with
transparently by the API with only the number of physical channels needing to
be specified by each module.
Signed-off-by: Paul Mundt <paul.mundt@nokia.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mundt [Mon, 18 Oct 2004 15:58:43 +0000 (08:58 -0700)]
[PATCH] sh: consistent API cleanup
This gets rid of the hardcoded workarounds for the Dreamcast in the
dma-mapping code, and now wraps into the common consistent_alloc() and
consistent_free() routines if the ones in the machvec aren't interested in
handling it.
Signed-off-by: Paul Mundt <paul.mundt@nokia.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mundt [Mon, 18 Oct 2004 15:58:17 +0000 (08:58 -0700)]
[PATCH] sh: SH7705 subtype cleanup + 32k cache support
This fixes up the existing SH7705 support and enables the 32k cache mode for
the processor.
Signed-off-by: Alex Song <songqf9@yahoo.ca> Signed-off-by: Paul Mundt <paul.mundt@nokia.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Paul Mackerras [Mon, 18 Oct 2004 15:57:51 +0000 (08:57 -0700)]
[PATCH] ppc32: fix cpu voltage change delay
This patch fixes a problem where my new powerbook would sometimes hang or
crash when changing CPU speed. We had schedule_timeout(HZ/1000) in there,
intended to provide a delay of one millisecond. However, even with
HZ=1000, it was (I believe) only waiting for the next jiffy before
proceeding, which could be less than a millisecond. Changing the code to
use msleep, and specifying a time of 1 jiffy + 1ms has fixed the problem.
(When I looked at the msleep code, it appeared to me that msleep(1) with
HZ=1000 would sleep for between 0 and 1ms.)
Ben also asked me to remove the code that changes the AACK delay enable,
after looking in the Darwin sources and seeing that Darwin does not change
this in its corresponding code.
Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andrei Konovalov [Mon, 18 Oct 2004 15:57:02 +0000 (08:57 -0700)]
[PATCH] ppc32: Xilinx ML300 board support (very basic)
Adds minimal Xilinx ML300 board support (enough to boot with ramdisk). The
only peripheral devices supported are 16x50 compatible UARTs.
Signed-off-by: Andrei Konovalov <akonovalov@ru.mvista.com> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Acked-by: Matt Porter <mporter@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jens Axboe [Mon, 18 Oct 2004 15:56:50 +0000 (08:56 -0700)]
[PATCH] invalidate page race fix
invalidate_inode_pages() and invalidate_inode_pages2() can mark pages not
uptodate while read() is trying to read from them. This is interpreted as
an I/O error.
Fix that by teaching the invalidate code to leave the page alone if someone
else has a ref on it.
Ingo Molnar [Mon, 18 Oct 2004 15:55:37 +0000 (08:55 -0700)]
[PATCH] generic irq subsystem: core
The main goal of this patch is to consolidate all the different but still
fundamentally similar arch/*/kernel/irq.c code into the kernel/irq/ subsystem.
There are 4 new files in the kernel/irq/ directory:
- handle.c: core bits: __do_IRQ() and handle_IRQ_event(),
callable from arch-specific irq.c code.
- manage.c: the main driver apis
- spurious.c: the handling of buggy interrupt sources.
- autoprobe.c: probing of interrupts - older code but still in use.
- proc.c: /proc/irq/ code.
- internals.h for irq-core-internal interfaces not visible to drivers
nor arch PIC code.
An architecture enables the generic hardirq code by defining
CONFIG_GENERIC_HARDIRQS in its arch Kconfig. People doing this conversion
should check out the x86/x64/ppc/ppc64 patches for details - the conversion is
quite straightforward but every converted function (i.e. every function
removed from the arch irq.c) _must_ be matched to the generic version and if
there is any detail that the generic code should do it has to be added to the
generic code. All of the currently converted 4 architectures were converted
like that, and the generic code was extended/fixed along the way.
Other changes related to this patchset:
- clean up the irq include files (linux/irq.h, linux/interrupt.h,
linux/hardirq.h) and consolidate asm-*/[hard]irq.h. Note, to keep all
non-touched architectures in an untouched state this consolidation is
done carefully and strictly under CONFIG_GENERIC_HARDIRQS.
Once the consolidation is done we can do a couple of final cleanups
to reach the following logical splitup of 3 include files:
linux/interrupt.h: driver-visible APIs and details
linux/irq.h: core irq and arch-PIC code, internals
asm-*/irq.h: arch PIC and irq delivery details
the following include files will likely vanish:
linux/hardirq.h merges into linux/irq.h
asm-*/hardirq.h: merges into asm-*/irq.h
asm-*/hw_irq.h: merges into asm-*/irq.h
Christoph would like to do these once the current wave of
cleanups gets in.
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Gregory Kurz [Mon, 18 Oct 2004 15:55:24 +0000 (08:55 -0700)]
[PATCH] fork() bug invalidates file descriptors
Take a process P1 that spawns a thread T (aka. a clone with CLONE_FILES).
If P1 forks another process P2 (aka. not a clone) while T is blocked in a
open() that should return file descriptor FD, then FD will be unusable in
P2. This leads to strange behaviors in the context of P2: close(FD)
returns EBADF, while dup2(a_valid_fd, FD) returns EBUSY and of course FD is
never returned again by any syscall...
/*
* This program is meant to show that calling fork() while a clone spawned
* with CLONE_FILES is blocked in open() makes a fd number unusable in the
* child.
*
*
* Parent Clone Child
* |
* clone(CLONE_FILES)-
Hugh Dickins [Mon, 18 Oct 2004 15:54:48 +0000 (08:54 -0700)]
[PATCH] __set_page_dirty_nobuffers mappings
Marcelo noticed that the BUG_ON in __set_page_dirty_nobuffers doesn't make
much sense: it lost its way in 2.6.7, amidst so many page_mappings!
It's supposed to be checking that, although page->mapping may suddenly go NULL
from truncation, and although tmpfs swizzles page_mapping(page) between tmpfs
inode address_space and swapper_space, there's sufficient stabilization while
here in __set_page_dirty_nobuffers that the mapping after we locked
mapping->tree_lock is the same as the mapping before we locked
mapping->tree_lock i.e. the lock we hold is the right one.
Roland McGrath [Mon, 18 Oct 2004 15:54:38 +0000 (08:54 -0700)]
[PATCH] exec: fix posix-timers leak and pending signal loss
I've found some problems with exec and fixed them with this patch to
de_thread.
The second problem is that a multithreaded exec loses all pending signals.
This is violation of POSIX rules. But a moment's thought will show it's
also just not desireable: if you send a process a SIGTERM while it's in the
middle of calling exec, you expect either the original program in that
process or the new program being exec'd to handle that signal or be killed
by it. As it stands now, you can try to kill a process and have that
signal just evaporate if it's multithreaded and calls exec just then. I
really don't know what the rationale was behind the de_thread code that
allocates a new signal_struct. It doesn't make any sense now. The other
code there ensures that the old signal_struct is no longer shared. Except
for posix-timers, all the state there is stuff you want to keep. So my
changes just keep the old structs when they are no longer shared, and all
the right state is retained (after clearing out posix-timers).
The final bug is that the cumulative statistics of dead threads and dead
child processes are lost in the abandoned signal_struct. This is also
fixed by holding on to it instead of replacing it.
Signed-off-by: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Lev Makhlis [Mon, 18 Oct 2004 15:54:26 +0000 (08:54 -0700)]
[PATCH] show aggregate per-process counters in /proc/PID/stat 2
Add up resource usage counters for live and dead threads to show aggregate
per-process usage in /proc/<pid>/stat. This mirrors the new getrusage()
semantics. /proc/<pid>/task/<tid>/stat still has the per-thread usage.
After moving the counter aggregation loop inside a task->sighand lock to
avoid nasty race conditions, it has survived stress-testing with '(while
true; do sleep 1 & done) & top -d 0.1'
Signed-off-by: Lev Makhlis <mlev@despammed.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Arnd Bergmann [Mon, 18 Oct 2004 15:54:02 +0000 (08:54 -0700)]
[PATCH] add missing linux/syscalls.h includes
I found that the prototypes for sys_waitid and sys_fcntl in
<linux/syscalls.h> don't match the implementation. In order to keep all
prototypes in sync in the future, now include the header from each file
implementing any syscall.