ChangeSet@1.2251, 2004-10-19 00:16:19-07:00, torvalds@ppc970.osdl.org Fix pci config syscall definitions. Including the proper header file showed that they didn't match the declared prototypes. ChangeSet@1.2250, 2004-10-18 23:58:48-07:00, torvalds@ppc970.osdl.org Don't use obsolete gcc named initializer syntax. The proper C99 syntax is much preferred. ChangeSet@1.2249, 2004-10-18 23:57:41-07:00, torvalds@ppc970.osdl.org Fix old-style fn declaration. ChangeSet@1.2248, 2004-10-18 23:37:38-07:00, axboe@suse.de [PATCH] return full SCSI status byte in SG_IO This has been around for a while. Return the full scsi result byte in rq->errors for SG_IO generated requests. Signed-off-by: Jens Axboe Signed-off-by: Linus Torvalds ChangeSet@1.2247, 2004-10-18 23:12:06-07:00, mingo@elte.hu [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. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2246, 2004-10-18 23:11:52-07:00, mingo@elte.hu [PATCH] sched: fix SCHED_SMT & numa=fake=2 lockup This patch fixes an interaction between the numa=fake= 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 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.) Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2245, 2004-10-18 23:11:39-07:00, colpatch@us.ibm.com [PATCH] sched: remove NODE_BALANCE_RATE definitions NODE_BALANCE_RATE is defined all over the place, but used nowhere. Let's remove it. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2244, 2004-10-18 23:11:27-07:00, colpatch@us.ibm.com [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 Signed-off-by: Linus Torvalds ChangeSet@1.2243, 2004-10-18 23:11:14-07:00, pwil3058@bigpond.net.au [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2242, 2004-10-18 23:11:02-07:00, akpm@osdl.org [PATCH] sched: print preempt count Better debugging output when the CPU scheduler detects atomicity errors. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2241, 2004-10-18 23:10:50-07:00, nickpiggin@yahoo.com.au [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 Signed-off-by: Linus Torvalds ChangeSet@1.2240, 2004-10-18 23:10:37-07:00, nickpiggin@yahoo.com.au [PATCH] sched: use CPU_DOWN_FAILED notifier Use CPU_DOWN_FAILED notifier in the sched-domains hotplug code. This goes with 4/8 "integrate cpu hotplug and sched domains" Signed-off-by: Nick Piggin Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2239, 2004-10-18 23:10:25-07:00, nickpiggin@yahoo.com.au [PATCH] sched: hotplug add a CPU_DOWN_FAILED notifier Introduce CPU_DOWN_FAILED notifier, so we can cope with a failure after a CPU_DOWN_PREPARE notice. This fixes 3/8 "add CPU_DOWN_PREPARE notifier" to be useful Signed-off-by: Nick Piggin Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2238, 2004-10-18 23:10:13-07:00, nickpiggin@yahoo.com.au [PATCH] sched: enable SD_LOAD_BALANCE Actually turn on SD_LOAD_BALANCE for the regular domains. Introduced by 5/8 "sched add load balance flag". Signed-off-by: Nick Piggin Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2237, 2004-10-18 23:10:00-07:00, nickpiggin@yahoo.com.au [PATCH] sched: fix domain debug for isolcpus Fix an oops in the domain debug code when isolated CPUs are specified. Introduced by 5/8 "sched add load balance flag" Signed-off-by: Nick Piggin Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2236, 2004-10-18 23:09:48-07:00, nickpiggin@yahoo.com.au [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 . I fixed up the tricky NUMA groups initialistion. Signed-off-by: Nick Piggin Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2235, 2004-10-18 23:09:35-07:00, nickpiggin@yahoo.com.au [PATCH] sched: make domain setup overridable Allow sched domain setup to be overridden by arch code. This functionality is needed again. From: Paul Jackson 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 Signed-off-by: Ingo Molnar Signed-off-by: Paul Jackson Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2234, 2004-10-18 23:09:23-07:00, nickpiggin@yahoo.com.au [PATCH] sched: remove disjoint NUMA domains setup Remove the disjoint NUMA domains setup code. It was broken. Signed-off-by: Nick Piggin Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2233, 2004-10-18 23:09:10-07:00, nickpiggin@yahoo.com.au [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 Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2232, 2004-10-18 23:08:58-07:00, akpm@osdl.org [PATCH] sched: arch_destroy_sched_domains warning fix kernel/sched.c:4114: warning: `arch_destroy_sched_domains' defined but not used Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2231, 2004-10-18 23:08:46-07:00, nickpiggin@yahoo.com.au [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 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 Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2230, 2004-10-18 23:08:34-07:00, nickpiggin@yahoo.com.au [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 Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2229, 2004-10-18 23:08:22-07:00, nickpiggin@yahoo.com.au [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 Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2228, 2004-10-18 23:08:10-07:00, vladimir.grouzdev@Jaluna.COM [PATCH] xtime value may become incorrect 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 Signed-off-by: Linus Torvalds ChangeSet@1.2227, 2004-10-18 23:07:58-07:00, jeffm@novell.com [PATCH] ReiserFS: Fix several missing reiserfs_write_unlock calls This patch fixes several missing reiserfs_write_unlock() calls on error paths not introduced by reiserfs-io-error-handling.diff Signed-off-by: Jeff Mahoney Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2226, 2004-10-18 23:07:45-07:00, jeffm@novell.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2225, 2004-10-18 23:07:32-07:00, jeffm@novell.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2224, 2004-10-18 23:07:20-07:00, jeffm@novell.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2223, 2004-10-18 23:07:08-07:00, geraldsc@de.ibm.com [PATCH] s390: add support to read z/VM monitor records Add support to read z/VM monitor records. Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2222, 2004-10-18 23:06:56-07:00, edrossma@us.ibm.com [PATCH] s390: crypto device driver crypto driver changes: - Add support for zero-pad and crypto express II (CEX2C). Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2221, 2004-10-18 23:06:44-07:00, wein@de.ibm.com [PATCH] s390: z/VM log reader Add an interface to read from the z/VM recording system services. Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2220, 2004-10-18 23:06:31-07:00, arndb@de.ibm.com [PATCH] s390: z/VM watchdog timer Add support for z/VM watchdog timer. Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2219, 2004-10-18 23:06:18-07:00, schwidefsky@de.ibm.com [PATCH] s390: qeth layer 2 support From: Frank Pavlic From: Thomas Spatzier qeth network driver changes: - Add Layer 2 support for OSA-Express. Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2218, 2004-10-18 23:06:06-07:00, aherrman@de.ibm.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2217, 2004-10-18 23:05:54-07:00, blaisorblade_spam@yahoo.it [PATCH] uml: readd linux Makefile target 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 Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2216, 2004-10-18 23:05:42-07:00, takata@linux-m32r.org [PATCH] m32r: fix a compile error of M32R SIO driver Here is a patch to fix a compile error of m32r-sio.c. * include/asm-m32r/termbits.h: - Add CTVB definition. This modification is derived from new-serial-flow-control.patch; "[Patch] new serial flow control" (Oct. 4, 2004) http://www.uwsg.iu.edu/hypermail/linux/kernel/0410.0/0853.html Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2215, 2004-10-18 23:05:30-07:00, takata@linux-m32r.org [PATCH] m32r: update arch/m32r/mm/fault.c to fix a compile error Here is a patch to update arch/m32r/mm/fault.c in order to fix a compile error of -mm kernel for m32r. * arch/m32r/mm/fault.c: - Add the third parameter of expand_stack(). This modification is derived from enforce-a-gap-between-heap-and-stack.patch; "heap-stack-gap for 2.6" (Sep. 25, 2004) http://www.uwsg.iu.edu/hypermail/linux/kernel/0409.3/0435.html Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2214, 2004-10-18 23:05:18-07:00, takata@linux-m32r.org [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/m32r/kernel/sys_m32r.c: 32 /* 33 * sys_tas() - test-and-set 34 * linuxthreads testing version 35 */ 36 #ifndef CONFIG_SMP 37 asmlinkage int sys_tas(int *addr) 38 { 39 int oldval; 40 unsigned long flags; 41 42 if (!access_ok(VERIFY_WRITE, addr, sizeof (int))) 43 return -EFAULT; 44 local_irq_save(flags); 45 oldval = *addr; 46 *addr = 1; 47 local_irq_restore(flags); 48 return oldval; 49 } 50 #else /* CONFIG_SMP */ 51 #include 52 53 static spinlock_t tas_lock = SPIN_LOCK_UNLOCKED; 54 55 asmlinkage int sys_tas(int *addr) 56 { 57 int oldval; 58 59 if (!access_ok(VERIFY_WRITE, addr, sizeof (int))) 60 return -EFAULT; 61 62 spin_lock(&tas_lock); 63 oldval = *addr; /* <<< ATTENTION >>> * A page fault may happen here, because "addr" points an * user-space area. */ 64 *addr = 1; 65 spin_unlock(&tas_lock); 66 67 return oldval; 68 } 69 #endif /* CONFIG_SMP */ 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. Signed-off-by: Hayato Fujiwara Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2213, 2004-10-18 23:05:06-07:00, takata@linux-m32r.org [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. Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2212, 2004-10-18 23:04:53-07:00, takata@linux-m32r.org [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 Signed-off-by: Hayato Fujiwara Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2211, 2004-10-18 23:04:40-07:00, takata@linux-m32r.org [PATCH] m32r: update include/asm-m32r/m32102.h Here is a patch to update include/asm-m32r/m32102.h. * include/asm-m32r/m32102.h: - Add macro definitions for DMA controller. - Cosmetics; rearrange indentations. Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2210, 2004-10-18 23:04:28-07:00, takata@linux-m32r.org [PATCH] m32r: new CF/PCMCIA driver for m32r This patch is for the new M32R CF/PCMCIA drivers. It is moved from arch/m32r/drivers/ and some part are updated for 2.6 kernel. Signed-off-by: Hayato Fujiwara Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2209, 2004-10-18 23:04:16-07:00, takata@linux-m32r.org [PATCH] m32r: ds1302 driver This is a DS1302 real-time clock driver. It is moved from arch/m32r/drivers/, has been originally taken from arch/cris/arch-v10/drivers/ds1302.c. Currently, this driver supports only m32r target boards. Maybe some work will be required to support other target. Signed-off-by: Hayato Fujiwara Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2208, 2004-10-18 23:04:03-07:00, agx@sigxcpu.org [PATCH] Mac swsusp driver fixes Allow swsusp work with macintosh's own thermal sensor drivers enabled. Contributions from Nathan Hand Signed-Of-By: Guido Guenther Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2207, 2004-10-18 23:03:51-07:00, venkatesh.pallipadi@intel.com [PATCH] S3 suspend/resume with noexec v2 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. Signed-off-by: "Venkatesh Pallipadi" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2206, 2004-10-18 23:03:39-07:00, oliver@neukum.org [PATCH] additional documentation for power management This is additional documentation for power management. Pavel Machek has given his acknowledgement. Signed-Off-By: Oliver Neukum Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2205, 2004-10-18 23:03:26-07:00, pavel@ucw.cz [PATCH] swsusp: Documentation update Documentation update. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2204, 2004-10-18 23:03:14-07:00, pavel@ucw.cz [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 Signed-off-by: Linus Torvalds ChangeSet@1.2203, 2004-10-18 23:03:02-07:00, pavel@ucw.cz [PATCH] swsusp: fix process start times after resume Currently, process start times change after swsusp (because they are derived from jiffies and current time, oops). This should fix it. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2202, 2004-10-18 23:02:50-07:00, rddunlap@osdl.org [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 call chain: snd_mpu401_acpi_resource acpi_register_gsi mp_register_gsi io_apic_set_pci_routing {A} ioapic_register_intr IO_APIC_irq_trigger find_irq_entry 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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2201, 2004-10-18 23:02:38-07:00, mingo@elte.hu [PATCH] fix nosmp & pcibios_fixup_irqs() interaction 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. From: Oleg Nesterov Acked-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2200, 2004-10-18 23:02:26-07:00, suresh.b.siddha@intel.com [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. Signed-off-by: Suresh Siddha Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2199, 2004-10-18 23:02:14-07:00, oleg@tv-sign.ru [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. Signed-off-by: Oleg Nesterov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2198, 2004-10-18 23:02:02-07:00, suresh.b.siddha@intel.com [PATCH] share i386/x86_64 intel cache descriptors table 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. Signed-off-by: Suresh Siddha Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2197, 2004-10-18 23:01:49-07:00, trini@kernel.crashing.org [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2196, 2004-10-18 23:01:37-07:00, paul.mundt@nokia.com [PATCH] sh: ST40 updates This includes some ST40 updates from the ST tree. The most notable change is the ST40GX1 fixes for INTC2-based interrupts. Signed-off-by: Alex Bennee Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2195, 2004-10-18 23:01:25-07:00, paul.mundt@nokia.com [PATCH] sh: sh-sci updates sh-sci updates all around the board. Support for the newly added subtypes, some compilation cleanups, etc. Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2194, 2004-10-18 23:01:13-07:00, paul.mundt@nokia.com [PATCH] sh: CTP/PCI-SH03 board support This adds support for the CTP/PCI-SH03 board from Interface. Signed-off-by: Saito.K Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2193, 2004-10-18 23:01:00-07:00, paul.mundt@nokia.com [PATCH] sh: SE73180 board support This adds support for the SH73180 Solution Engine. Signed-off-by: Hiroshi DOYU Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2192, 2004-10-18 23:00:48-07:00, paul.mundt@nokia.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2191, 2004-10-18 23:00:35-07:00, paul.mundt@nokia.com [PATCH] sh: oprofile support for SH7750/SH7750S The SH7750 and SH7750S have hardware performance counters, this adds an oprofile driver for those. Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2190, 2004-10-18 23:00:22-07:00, paul.mundt@nokia.com [PATCH] sh: PCI updates This updates some of the PCI drivers. SH7751, the sh03 board-specific PCI code, and some ST40 PCI updates are grouped in this. Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2189, 2004-10-18 23:00:10-07:00, paul.mundt@nokia.com [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 Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2188, 2004-10-18 22:59:56-07:00, paul.mundt@nokia.com [PATCH] sh: SH4-202 MicroDev board support This adds support for the SH4-202 MicroDev from SuperH, Inc. Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2187, 2004-10-18 22:59:44-07:00, paul.mundt@nokia.com [PATCH] sh: SH-4 optimized memcpy() This adds support for an SH-4 optimized memcpy(). Written by Stuart Menefy . Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2186, 2004-10-18 22:59:31-07:00, paul.mundt@nokia.com [PATCH] sh: EDOSK7705 board support This adds support for the edosk7705 board from Renesas. Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2185, 2004-10-18 22:59:19-07:00, paul.mundt@nokia.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2184, 2004-10-18 22:59:07-07:00, paul.mundt@nokia.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2183, 2004-10-18 22:58:55-07:00, paul.mundt@nokia.com [PATCH] sh: defconfig updates Nothing exciting here.. random defconfig updates, as well as a few new ones for microdev and ctp/pci-sh03. Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2182, 2004-10-18 22:58:43-07:00, paul.mundt@nokia.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2181, 2004-10-18 22:58:30-07:00, paul.mundt@nokia.com [PATCH] sh: Use asm-offsets This basically follows the same change as for sh64 and adds asm-offsets to sh. Some hardcoded thread_info struct offsets get cleaned up by this. Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2180, 2004-10-18 22:58:17-07:00, paul.mundt@nokia.com [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 Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2179, 2004-10-18 22:58:05-07:00, paul.mundt@nokia.com [PATCH] sh: SH73180 subtype support This adds support for the SH73180 subtype (sh4a). Signed-off-by: Hiroshi DOYU Signed-off-by: Paul Mundt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2178, 2004-10-18 22:57:51-07:00, paulus@samba.org [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2177, 2004-10-18 22:57:39-07:00, mporter@kernel.crashing.org [PATCH] ppc32: configure PPC440GX L2 cache based on CPU rev This patch enables/disables the PPC440GX L2 cache based on errata which prevents reliable operation on certain CPU revisions and speed grades. Signed-off-by: Eugene Surovegin Signed-off-by: Matt Porter Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2176, 2004-10-18 22:57:27-07:00, mporter@kernel.crashing.org [PATCH] ppc32: add gen550.h Add a missing include file for gen550. Signed-off-by: Matt Porter Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2175, 2004-10-18 22:57:14-07:00, mporter@kernel.crashing.org [PATCH] ppc32: use gen550 for PPC44x progress/ppc-stub Use gen550 for early PPC progress messages and for the in-kernel ppc-stub.c on PPC44x. Signed-off-by: Matt Porter Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2174, 2004-10-18 22:57:02-07:00, akonovalov@ru.mvista.com [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 Acked-by: Benjamin Herrenschmidt Acked-by: Matt Porter Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2173, 2004-10-18 22:56:50-07:00, axboe@suse.de [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. Signed-off-by: Jens Axboe Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2172, 2004-10-18 22:56:37-07:00, mingo@elte.hu [PATCH] doc: remove references to hardirq.c The patch below removes stale references to kernel/hardirq.c in comments, remnants of the earlier iterations of the generic irq subsystem code. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2171, 2004-10-18 22:56:25-07:00, mingo@elte.hu [PATCH] generic irq subsystem: ppc64 port ppc64 port of generic hardirq handling. Signed-off-by: Ingo Molnar Signed-off-by: Christoph Hellwig Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2170, 2004-10-18 22:56:12-07:00, mingo@elte.hu [PATCH] generic irq subsystem: ppc port ppc32 port of generic hardirq handling. Signed-off-by: Ingo Molnar Signed-off-by: Christoph Hellwig Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2169, 2004-10-18 22:55:59-07:00, mingo@elte.hu [PATCH] generic irq subsystem: x86_64 port x86_64 port of generic hardirq handling. Signed-off-by: Ingo Molnar Signed-off-by: Christoph Hellwig Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2168, 2004-10-18 22:55:47-07:00, mingo@elte.hu [PATCH] generic irq subsystem: x86 port x86 port of generic hardirq handling. akpm: (in response to build errors) - remove APIC_MISMATCH_DEBUG altogether. Just make it synonymous with CONFIG_X86_IO_APIC - Move the definition of irq_mis_count over to io_apic.c Signed-off-by: Ingo Molnar Signed-off-by: Christoph Hellwig Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2167, 2004-10-18 22:55:37-07:00, mingo@elte.hu [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 Signed-off-by: Christoph Hellwig Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2166, 2004-10-18 22:55:24-07:00, gkurz@meiosys.com [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... testcase: #include #include #include #include #include #include #include #include #include #define FIFO "/tmp/bug_fifo" #define FD 0 /* * 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)- ChangeSet@1.2165, 2004-10-18 22:55:12-07:00, mingo@elte.hu [PATCH] fix the prof=schedule feature Fix mismerge of the "prof=schedule" feature. Without this patch the output is a boring empty profile. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2164, 2004-10-18 22:55:00-07:00, mason@suse.com [PATCH] reiserfs: small filesystem fix On small filesystems (<128M), make sure not to reference bitmap blocks that don't exist. Thanks to Jan Kara for finding this bug. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2163, 2004-10-18 22:54:48-07:00, hugh@veritas.com [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. Signed-off-by: Hugh Dickins Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2162, 2004-10-18 22:54:38-07:00, roland@redhat.com [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2161, 2004-10-18 22:54:26-07:00, Lev_Makhlis@bmc.com [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//stat. This mirrors the new getrusage() semantics. /proc//task//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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2160, 2004-10-18 22:54:14-07:00, albert@users.sourceforge.net [PATCH] distinct tgid/tid CPU usage This patch adjusts /proc/*/stat to have distinct per-process and per-thread CPU usage, faults, and wchan. Signed-off-by: Albert Cahalan Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2159, 2004-10-18 22:54:02-07:00, arnd@arndb.de [PATCH] add missing linux/syscalls.h includes I found that the prototypes for sys_waitid and sys_fcntl in 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. Signed-off-by: Arnd Bergmann Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2158, 2004-10-18 22:53:48-07:00, mingo@elte.hu [PATCH] softirqs: fix latency of softirq processing The attached patch fixes a local_bh_enable() buglet: we first enabled softirqs then did we do local_softirq_pending() - often this is preemptible code. So this task could be preempted and there's no guarantee that softirq processing will occur (except the periodic timer tick). The race window is small but existent. This could result in packet processing latencies or timer expiration latencies - hard to detect and annoying bugs. The fix is to invoke softirqs with softirqs enabled but preemption still disabled. Patch is against 2.6.9-rc2-mm1. Signed-off-by: Ingo Molnar Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2157, 2004-10-18 22:53:35-07:00, roland@redhat.com [PATCH] fix PTRACE_ATTACH race with real parent's wait calls There is a race between PTRACE_ATTACH and the real parent calling wait. For a moment, the task is put in PT_PTRACED but with its parent still pointing to its real_parent. In this circumstance, if the real parent calls wait without the WUNTRACED flag, he can see a stopped child status, which wait should never return without WUNTRACED when the caller is not using ptrace. Here it is not the caller that is using ptrace, but some third party. This patch avoids this race condition by adding the PT_ATTACHED flag to distinguish a real parent from a ptrace_attach parent when PT_PTRACED is set, and then having wait use this flag to confirm that things are in order and not consider the child ptraced when its ->ptrace flags are set but its parent links have not yet been switched. (ptrace_check_attach also uses it similarly to rule out a possible race with a bogus ptrace call by the real parent during ptrace_attach.) While looking into this, I noticed that every arch's sys_execve has: current->ptrace &= ~PT_DTRACE; with no locking at all. So, if an exec happens in a race with PTRACE_ATTACH, you could wind up with ->ptrace not having PT_PTRACED set because this store clobbered it. That will cause later BUG hits because the parent links indicate ptracedness but the flag is not set. The patch corrects all the places I found to use task_lock around diddling ->ptrace when it's possible to be racing with ptrace_attach. (The ptrace operation code itself doesn't have this issue because it already excludes anyone else being in ptrace_attach.) Signed-off-by: Roland McGrath Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2156, 2004-10-18 22:53:22-07:00, roland@redhat.com [PATCH] add WCONTINUED support to wait4 syscall POSIX specifies the new WCONTINUED flag for waitpid, not just for waitid. I overlooked this addition when I implemented waitid. The real work was already done to support waitid, but waitpid needs to report the results Signed-off-by: Roland McGrath Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2155, 2004-10-18 22:53:09-07:00, roland@redhat.com [PATCH] make rlimit settings per-process instead of per-thread POSIX specifies that the limit settings provided by getrlimit/setrlimit are shared by the whole process, not specific to individual threads. This patch changes the behavior of those calls to comply with POSIX. I've moved the struct rlimit array from task_struct to signal_struct, as it has the correct sharing properties. (This reduces kernel memory usage per thread in multithreaded processes by around 100/200 bytes for 32/64 machines respectively.) I took a fairly minimal approach to the locking issues with the newly shared struct rlimit array. It turns out that all the code that is checking limits really just needs to look at one word at a time (one rlim_cur field, usually). It's only the few places like getrlimit itself (and fork), that require atomicity in accessing a whole struct rlimit, so I just used a spin lock for them and no locking for most of the checks. If it turns out that readers of struct rlimit need more atomicity where they are now cheap, or less overhead where they are now atomic (e.g. fork), then seqcount is certainly the right thing to use for them instead of readers using the spin lock. Though it's in signal_struct, I didn't use siglock since the access to rlimits never needs to disable irqs and doesn't overlap with other siglock uses. Instead of adding something new, I overloaded task_lock(task->group_leader) for this; it is used for other things that are not likely to happen simultaneously with limit tweaking. To me that seems preferable to adding a word, but it would be trivial (and arguably cleaner) to add a separate lock for these users (or e.g. just use seqlock, which adds two words but is optimal for readers). Most of the changes here are just the trivial s/->rlim/->signal->rlim/. I stumbled across what must be a long-standing bug, in reparent_to_init. It does: memcpy(current->rlim, init_task.rlim, sizeof(*(current->rlim))); when surely it was intended to be: memcpy(current->rlim, init_task.rlim, sizeof(current->rlim)); As rlim is an array, the * in the sizeof expression gets the size of the first element, so this just changes the first limit (RLIMIT_CPU). This is for kernel threads, where it's clear that resetting all the rlimits is what you want. With that fixed, the setting of RLIMIT_FSIZE in nfsd is superfluous since it will now already have been reset to RLIM_INFINITY. The other subtlety is removing: tsk->rlim[RLIMIT_CPU].rlim_cur = RLIM_INFINITY; in exit_notify, which was to avoid a race signalling during self-reaping exit. As the limit is now shared, a dying thread should not change it for others. Instead, I avoid that race by checking current->state before the RLIMIT_CPU check. (Adding one new conditional in that path is now required one way or another, since if not for this check there would also be a new race with self-reaping exit later on clearing current->signal that would have to be checked for.) The one loose end left by this patch is with process accounting. do_acct_process temporarily resets the RLIMIT_FSIZE limit while writing the accounting record. I left this as it was, but it is now changing a limit that might be shared by other threads still running. I left this in a dubious state because it seems to me that processing accounting may already be more generally a dubious state when it comes to NPTL threads. I would think you would want one record per process, with aggregate data about all threads that ever lived in it, not a separate record for each thread. I don't use process accounting myself, but if anyone is interested in testing it out I could provide a patch to change it this way. One final note, this is not 100% to POSIX compliance in regards to rlimits. POSIX specifies that RLIMIT_CPU refers to a whole process in aggregate, not to each individual thread. I will provide patches later on to achieve that change, assuming this patch goes in first. Signed-off-by: Roland McGrath Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2154, 2004-10-18 22:52:55-07:00, mingo@elte.hu [PATCH] i386 entry.S cleanups Remove the unused lcall7/lcall27 code. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2153, 2004-10-18 22:52:43-07:00, pavel@ucw.cz [PATCH] acpi proc: error handling Propagate the software_suspend() return value. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2152, 2004-10-18 22:52:31-07:00, pavel@ucw.cz [PATCH] swsusp: progress in percent swsusp currently has very poor progress indication. Thanks to Erik Rigtorp , we have percentages there, so people know how long wait to expect. Please apply, From: Erik Rigtorp Signed-off-by: Pavel Machek Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2151, 2004-10-18 22:52:19-07:00, andrea@novell.com [PATCH] parport_pc superio chip fixes This patch fixes some troubles that somebody reported me with the superio chips. In short rmmod parport_pc && cat /proc/iomem was good enough for crashing the box hard on some machine (and hwscan --printer was doing just that). The way the oops triggers is that iomem tries to vsprintf the p->name, but the p->name was a static string in the module address (now unloaded). The reason is that the superio chip scanning leaves up to two persistent ranges claimed. But the second (legacy) pass has no way to notice the resources are already reclaimed. Plus if the superio->io was different than the "io" variable (the range to scan for superio chips) the "io" range would generate a leak of the original "io" range too. I simply make sure to always release the requested space during the superio scan, and I make sure not to istantiate new ranges in the p->base that would cause the later parport scan to fail too (plus leaving up to leaked resources). The previous code that was returning values and was leaving garbage in there made no sense to me. My best guess (assuming I didn't misread it ;) is that probably somebody added the request_region without realizing they're pointing to the very same address that would be requested later (and nobody does accesses on those ranges until later, so it was very safe to claim it later). Disclaimer: I don't have the specs of the winbond and smsc at hand, I just guessed what they do from the code (nothing checks superio->io except get_superio_dma get_superio_irq, which made the thing enough self explainatory to fix it without specs) Signed-off-by: Andrea Arcangeli Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2150, 2004-10-18 22:52:07-07:00, rohit.seth@intel.com [PATCH] add sys_setaltroot() Add a new system call setaltroot(2). Currently, using the altroot feature is accessible only via the set_personality() system call. It is accessible to user space only if there is more than one exec domain in the system. This patch allows using the altroot feature on systems where there is only one exec domain. It is possible to work around the issue by adding a dummy exec domain, but it was rejected for not being very elegant. If this feature is implemented in userspace, it adds a 16% overhead on a test case which greps for a single word in the kernel source tree. Signed-off-by: Zou Nanhai Signed-off-by: Gordon Jin Signed-off-by: Arun Sharma Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds ChangeSet@1.2149, 2004-10-18 22:43:26-07:00, torvalds@ppc970.osdl.org Wrap inside '#ifndef __ASSEMBLY__' None of the compatibility defines make sense for assembly files, and gcc has trouble with vararg macros when using "-traditional" (which is used for asm), to the point of ICE'ing. ChangeSet@1.2148, 2004-10-18 22:27:41-07:00, torvalds@ppc970.osdl.org Add copyright notice on ppc64 iomap files. Paul cares. I think there's something in the water at IBM that makes people sticklers ;) ChangeSet@1.2147, 2004-10-18 22:23:22-07:00, benh@kernel.crashing.org [PATCH] ppc64: Fix iSeries build (ouch !) The move of iomap out of eeh inadvertently broke iSeries ... Fixed like this. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Linus Torvalds ChangeSet@1.2146, 2004-10-18 22:23:09-07:00, benh@kernel.crashing.org [PATCH] ppc32/64: FPU/vector register restore after signal This fixes some issues with restoring the altivec and/or FPU registers upon return from a signal or when setting a context. It also add a proper stack backlink to the signal frames created for 64 bits applications. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Linus Torvalds ChangeSet@1.2145, 2004-10-18 22:16:52-07:00, torvalds@ppc970.osdl.org Older gcc's ICE on missing (unused) varags macro name. ChangeSet@1.2143, 2004-10-18 16:41:51-07:00, torvalds@ppc970.osdl.org Merge bk://gkernel.bkbits.net/libata-2.6 into ppc970.osdl.org:/home/torvalds/v2.6/linux ChangeSet@1.2142, 2004-10-18 15:50:44-07:00, torvalds@ppc970.osdl.org Add fake '__builtin_warning()' for the gcc case. Allows us to do compile-time sparse warnings of our own. ChangeSet@1.2131.12.3, 2004-10-18 23:02:02+01:00, ben-linux@org.rmk.(none) [ARM PATCH] 2145/1: S3C2410 - GPIO ID register update Patch from Ben Dooks Update the include/asm-arm/arch-s3c2410/regs-gpio.h with GSTATUS1 register information Signed-off-by: Ben Dooks ChangeSet@1.2131.12.2, 2004-10-18 22:56:50+01:00, ben-linux@org.rmk.(none) [ARM PATCH] 2144/1: S3C2410 - s3c2440 fixes and clock updates Patch from Ben Dooks Fixes the following problems and ommisions: - added variable for base crystal rate - moved clock variables into clock.c - fixed bug in identifying s3c2440 cpus - added initial support for new uart registration - removed base blocks from include/asm/arch/hardware.h Signed-off-by: Ben Dooks ChangeSet@1.2131.12.1, 2004-10-18 22:48:44+01:00, ben-linux@org.rmk.(none) [ARM PATCH] 2131/1: Add _iomem to the IO string functions Patch from Ben Dooks This patch stops mtd from generating problems of casting pointers to ints, due to the memcpy_fromio and related functions all taking `unsigned long` for their IO addresses. Replace `unsigned long` with `void __iomem *` Compiled clean on arch-s3c2410 Signed-off-by: Ben Dooks ChangeSet@1.2140, 2004-10-18 16:48:22-05:00, jejb@titanic.il.steeleye.com Merge titanic.il.steeleye.com:/home/jejb/BK/scsi-target-2.6 into titanic.il.steeleye.com:/home/jejb/BK/scsi-for-linus-2.6 ChangeSet@1.2134.1.15, 2004-10-18 15:57:44-05:00, jejb@mulgrave.(none) aic7xxx and aic79xx: fix sleeping while holding a lock From: Luben Tuikov Fix sleeping while holding a lock on host removal and on killing the DV thread. Signed-off-by: Luben Tuikov Signed-off-by: James Bottomley ChangeSet@1.2139, 2004-10-18 15:43:05-05:00, jejb@titanic.il.steeleye.com SCSI: fix Suspend I/O block/unblock path From: James.Smart@Emulex.Com urther testing is showing that we are having some i/o threads prematurely die with the following message: "rejecting I/O to device being removed" Signed-off-by: James Bottomley ChangeSet@1.2134.1.14, 2004-10-18 14:52:20-05:00, mike.miller@hp.com [PATCH] cciss: fixes for clustering This patch changes our open specifically for clustering software. We must allow root to access any volume or device with a LUN ID. We also modified our revalidate function for this reason. If a logical is reserved, we must register it with the OS with size=0. Then the backup system can call BLKRRPART after breaking the reservation to set the device to the correct size. We also must register a controller with no logical volumes for the online utilities to function. This is the way we've done it since the 2.2 kernel. Which doesn't neccesarily make it right, but we have legacy apps to consider. Signed off by: Mike Miller Signed-off-by: James Bottomley ChangeSet@1.2131.11.19, 2004-10-18 11:50:06-07:00, torvalds@ppc970.osdl.org Linux 2.6.9 TAG: v2.6.9