summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* omap mmc: Add low-level initialization for hsmmc controllerTony Lindgren2008-12-1114-19/+730
| | | | | | | | | | | | | | | | | | | | | | | Add low-level initialization for hsmmc controller. Merged into this patch patch are various improvments and board support by Grazvydas Ignotas and David Brownell. Also change wire4 to be wires, as some newer controllers support 8 data lines. Cc: Pierre Ossman <drzeus-mmc@drzeus.cx> Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* omap mmc: Add better MMC low-level initTony Lindgren2008-12-1116-283/+529
| | | | | | | | | | | | | | | | | | | | | | This will simplify the MMC low-level init, and make it more flexible to add support for a newer MMC controller in the following patches. The patch rearranges platform data and gets rid of slot vs controller confusion in the old data structures. Also fix device id numbering in the clock code. Some code snippets are based on an earlier patch by Russell King <linux@arm.linux.org.uk>. Cc: Pierre Ossman <drzeus-mmc@drzeus.cx> Signed-off-by: Tony Lindgren <tony@atomide.com>
* omap mmc: Remove broken MMC init codeTony Lindgren2008-12-1112-309/+1
| | | | | | | | | | | | | Most of the omap1 MMC boards got broken by an earlier patch 138ab9f8321f67c71984ca43222efa71b0a0a0a9. If you look closely, the MMC init funtions are pretty much just stubs. Remove broken init code to make room for cleaner MMC init code. Cc: Pierre Ossman <drzeus-mmc@drzeus.cx> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP3: Pin multiplexing updates for 24xx and 34xxArun KS2008-12-112-1/+84
| | | | | | | | | | | | | This patch adds some new pin multiplexing options for McBSP and McSPI from Arun KS. Also add two more GPIOs from David Brownell. Also mark omap24xx_cfg_reg() static. Signed-off-by: Arun KS <arunks@mistralsolutions.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP3: Add basic support for Pandora handheld consoleGrazvydas Ignotas2008-12-114-0/+1594
| | | | | | | | | | | This patch adds support for basic features: uarts, i2c, and rtc. Also includes defconfig. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP3: DMA: Fix for sDMA Errata 1.113Santosh Shilimkar2008-12-111-1/+14
| | | | | | | | | SDMA channel is not disabled after transaction error. So explicitly disable it. Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Acked By : Nishant kamat <nskamat@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP3: LDP: Add Ethernet device support to make ldp boot succeessStanley.Miao2008-12-113-2/+208
| | | | | | | | | | Add Ethernet device support in board-ldp.c to make ldp can boot and mount nfs successfully. Signed-off-by: Stanley.Miao <stanley.miao@windriver.com>
* ARM: OMAP3: Add OMAP34xx pin multiplexing into I2C bus registration helperJarkko Nikula2008-12-111-19/+36
| | | | | | | | - Simplify function omap_i2c_mux_pins - Add OMAP34xx pin multiplexing for busses 1 - 3 Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP3: Warn about spurious interruptsTony Lindgren2008-12-111-0/+39
| | | | | | | | | In the case of spurious interrupt, the handler for previous interrupt handler needs to flush posted writes with a read back of the interrupt ack register. Warn about handlers that need to flush posted writes. Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP2: skip unnecessary TLDR write during non-autoreload for gptimerPaul Walmsley2008-12-111-3/+4
| | | | | | | | | | | | | | | | | | | | | | The GPTIMER TLDR register does not need to be written if the GPTIMER is not in autoreload mode. This is the usual case for dynamic tick-enabled kernels. Simulation data indicate that skipping the read that occurs as part of the write should save at least 300-320 ns for each GPTIMER1 timer reprogram. (This assumes L4-Wakeup is at 19MHz and GPTIMER write posting is enabled.) Skipping the write itself probably won't have much impact since it should be posted on the OCP interconnect. Tested on 2430SDP and 3430SDP. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Richard Woodruff <r-woodruff2@ti.com> Acked-by: Kevin Hilman <khilman@deeprootsystems.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP2: drop redundant pending write check for gptimerPaul Walmsley2008-12-111-4/+0
| | | | | | | | | | | | | omap_dm_timer_write_reg() already waits for pending writes to complete, so the extra wait in omap_dm_timer_set_load() is superfluous. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Richard Woodruff <r-woodruff2@ti.com> Acked-by: Kevin Hilman <khilman@deeprootsystems.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP2: bard-h4: list those eepromsDavid Brownell2008-12-111-0/+14
| | | | | | | | | | Declare the two 1Kbit EEPROMs included in the H4 board stack. One is on the CPU card; the other is on the mainboard. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP2: Use omap_rev() instead of system_revLauri Leukkunen2008-12-117-43/+66
| | | | | | | | | | | system_rev is meant for board revision, this patch changes all relevant instances to use the new omap_rev() function liberating system_rev to be used with ATAG_REVISION as it has been designed. Signed-off-by: Lauri Leukkunen <lauri.leukkunen@nokia.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP2: Fix cpu detectionTony Lindgren2008-12-114-226/+145
| | | | | | | | | | | At some point omap2 changed the bits for GET_OMAP_CLASS, which broke 15xx detection on 730 as noticed by Russell King. This patch fixes omap2 cpu detection to respect the original GET_OMAP_CLASS, and simplifies the detection for 34xx. Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP2: Prepare cpu detection for further improvementsTony Lindgren2008-12-111-1/+6
| | | | | | | | | Rename omap2_check_revision to omap24xx_check_revision. Then next patch will split if further and add omap34xx_check_revision. Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP1: osk5912: LED trigger update for CFDavid Brownell2008-12-111-1/+2
| | | | | | | | | | Help OSK work better with root-on-CF, by having one of the LEDs use the "ide-disk" trigger (to kick in during CF I/O). Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP1: osk5912: Mistral eeprom supportDavid Brownell2008-12-111-2/+27
| | | | | | | | | | | | | | List the 4 Kbit I2C EEPROM included on the Mistral board. Also add a comment about the hardware workaround needed to properly support the WAKE button. More info at http://elinux.org/OSK_Mistral_wakeup_button_mod Still no support for the (optional) camera sensor. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: Switch ohci-omap to gpio_request/free callsJarkko Nikula2008-12-111-3/+3
| | | | | | | | | | | | | Switch to gpio_request/free calls Cc: linux-usb@vger.kernel.org Acked-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: Switch to gpio_request/free callsJarkko Nikula2008-12-1116-39/+43
| | | | | | | | | | Switch to gpio_request/free calls Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: minor gpio bugfixesDavid Brownell2008-12-111-5/+15
| | | | | | | | | | | | | | | | Minor GPIO fixes: - If get_gpio_bank() fails, then BUG() out. - In omap_set_gpio_debounce(): * protect the read/modify/write with the relevant spinlock * make the omap3 clock ops pass "sparse" checking Except for the spinlock problem, these were reported through "make". Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: make legacy gpio request/free calls superfluousJarkko Nikula2008-12-112-34/+21
| | | | | | | | | | | | | | | Clean up OMAP GPIO request/free functions - Rename and declare static OMAP specific GPIO request/free functions - Register them into gpiolib as chip-specific hooks - Add omap_request_gpio/omap_free_gpio wrappers for existing code not converted yet to use gpiolib Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com> [ dbrownell@users.sourceforge.net: remove needless check_gpio() calls ] Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: use gpio_to_irqDavid Brownell2008-12-118-25/+26
| | | | | | | | | | | | Have most uses of OMAP_GPIO_IRQ() use gpio_to_irq() instead. Calls used for table initialization are left alone, at least this time around. (This patch is for code in both the OMAP tree and mainline.) Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: switch to gpio_direction_outputDavid Brownell2008-12-118-36/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | More conversion to the standard GPIO interfaces: stop using omap_set_gpio_direction() entirely, and switch over to the gpio_direction_output() call. Note that because gpio_direction_output() includes the initial value, this change isn't quite transparent. - For the call sites which defined an initial value either before or after setting the direction, that value was used. When that value was previously assigned afterwards, this could eliminate a brief output glitch ... and possibly change behavior. In a few cases (LCDs) several values were assigned together ... those were re-arranged to match the explicit sequence provided. - Some call sites didn't define such a value; so I chose an initial "off/reset" value that seemed to default to "off". In short, files touched by this patch might notice some small changes in startup behavior (with trivial fixes). Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: switch to gpio_direction_inputDavid Brownell2008-12-1111-16/+16
| | | | | | | | More switchover to the cross-platform GPIO interface: use gpio_direction_input(), not an OMAP-specific call. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: switch to standard gpio get/set callsDavid Brownell2008-12-1117-68/+48
| | | | | | | | | | | | | | | | This patch replaces some legacy OMAP GPIO calls with the "new" (not really, any more!) calls that work on most platforms. The calls addressed by this patch are the simple ones to get and set values ... for code that's in mainline, including the implementations of those calls. Except for the declarations and definitions of those calls, all of these changes were performed by a simple SED script. Plus, a few "if() set() else set()" branches were merged by hand. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: gpios implement new to_irq()David Brownell2008-12-112-4/+21
| | | | | | | | | | | Make OMAP use the new __gpio_to_irq() hook, to make it easier to support IRQs coming in from off-chip gpio controllers like the TWL4030/TPS65930 chip used on OMAP3 boads like Beagleboard.org and the Gumstix Overo. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: Extend gpio label column width in omap_gpio debugfs fileJarkko Nikula2008-12-111-1/+1
| | | | | | | | | | | | There are already various drivers having bigger label than 10 bytes. Most of them fit well under 20 bytes but make column width exact so that oversized labels don't mess up output alignment. Signed-off-by: Jarkko Nikula <jarkko.nikula@nokia.com> Acked-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
* ARM: OMAP: Enable GPIO debounce clock only when debounce is enabled v3Jouni Hogander2008-12-112-29/+33
| | | | | | | | | | | | | | | | | | | This patch changes gpio "driver" to enable debounce clock for gpio-bank only when debounce is enabled for some gpio in that bank. Gpio functional clocks are also renamed in clock tree, gpioX_fck -> gpioX_dbck. This patch triggers problem with gpio wake-up and Omap3. Gpios in PER domain aren't capable to generate wake-up if PER domain is in sleep state. For this iopad wake-up should be used and needed pad configuration should be done. Enabling iopad wake-up for gpio pads is left for bootloader or omap mux configuration in kernel. Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com> Acked-by: Paul Walmsley <paul@pwsan.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
* Linux 2.6.28-rc8v2.6.28-rc8Linus Torvalds2008-12-111-1/+1
|
* Merge branch 'sched-fixes-for-linus' of ↵Linus Torvalds2008-12-101-0/+2
|\ | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: sched: CPU remove deadlock fix
| * sched: CPU remove deadlock fixBrian King2008-12-091-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Impact: fix possible deadlock in CPU hot-remove path This patch fixes a possible deadlock scenario in the CPU remove path. migration_call grabs rq->lock, then wakes up everything on rq->migration_queue with the lock held. Then one of the tasks on the migration queue ends up calling tg_shares_up which then also tries to acquire the same rq->lock. [c000000058eab2e0] c000000000502078 ._spin_lock_irqsave+0x98/0xf0 [c000000058eab370] c00000000008011c .tg_shares_up+0x10c/0x20c [c000000058eab430] c00000000007867c .walk_tg_tree+0xc4/0xfc [c000000058eab4d0] c0000000000840c8 .try_to_wake_up+0xb0/0x3c4 [c000000058eab590] c0000000000799a0 .__wake_up_common+0x6c/0xe0 [c000000058eab640] c00000000007ada4 .complete+0x54/0x80 [c000000058eab6e0] c000000000509fa8 .migration_call+0x5fc/0x6f8 [c000000058eab7c0] c000000000504074 .notifier_call_chain+0x68/0xe0 [c000000058eab860] c000000000506568 ._cpu_down+0x2b0/0x3f4 [c000000058eaba60] c000000000506750 .cpu_down+0xa4/0x108 [c000000058eabb10] c000000000507e54 .store_online+0x44/0xa8 [c000000058eabba0] c000000000396260 .sysdev_store+0x3c/0x50 [c000000058eabc10] c0000000001a39b8 .sysfs_write_file+0x124/0x18c [c000000058eabcd0] c00000000013061c .vfs_write+0xd0/0x1bc [c000000058eabd70] c0000000001308a4 .sys_write+0x68/0x114 [c000000058eabe30] c0000000000086b4 syscall_exit+0x0/0x40 Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Acked-by: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
* | fix mapping_writably_mapped()Hugh Dickins2008-12-101-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lee Schermerhorn noticed yesterday that I broke the mapping_writably_mapped test in 2.6.7! Bad bad bug, good good find. The i_mmap_writable count must be incremented for VM_SHARED (just as i_writecount is for VM_DENYWRITE, but while holding the i_mmap_lock) when dup_mmap() copies the vma for fork: it has its own more optimal version of __vma_link_file(), and I missed this out. So the count was later going down to 0 (dangerous) when one end unmapped, then wrapping negative (inefficient) when the other end unmapped. The only impact on x86 would have been that setting a mandatory lock on a file which has at some time been opened O_RDWR and mapped MAP_SHARED (but not necessarily PROT_WRITE) across a fork, might fail with -EAGAIN when it should succeed, or succeed when it should fail. But those architectures which rely on flush_dcache_page() to flush userspace modifications back into the page before the kernel reads it, may in some cases have skipped the flush after such a fork - though any repetitive test will soon wrap the count negative, in which case it will flush_dcache_page() unnecessarily. Fix would be a two-liner, but mapping variable added, and comment moved. Reported-by: Lee Schermerhorn <Lee.Schermerhorn@hp.com> Signed-off-by: Hugh Dickins <hugh@veritas.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | Merge branch 'to-linus' of ↵Linus Torvalds2008-12-101-1/+9
|\ \ | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland * 'to-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland: tracehook: exec double-reporting fix
| * | tracehook: exec double-reporting fixRoland McGrath2008-12-101-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch 6341c39 "tracehook: exec" introduced a small regression in 2.6.27 regarding binfmt_misc exec event reporting. Since the reporting is now done in the common search_binary_handler() function, an exec of a misc binary will result in two (or possibly multiple) exec events being reported, instead of just a single one, because the misc handler contains a recursive call to search_binary_handler. To add to the confusion, if PTRACE_O_TRACEEXEC is not active, the multiple SIGTRAP signals will in fact cause only a single ptrace intercept, as the signals are not queued. However, if PTRACE_O_TRACEEXEC is on, the debugger will actually see multiple ptrace intercepts (PTRACE_EVENT_EXEC). The test program included below demonstrates the problem. This change fixes the bug by calling tracehook_report_exec() only in the outermost search_binary_handler() call (bprm->recursion_depth == 0). The additional change to restore bprm->recursion_depth after each binfmt load_binary call is actually superfluous for this bug, since we test the value saved on entry to search_binary_handler(). But it keeps the use of of the depth count to its most obvious expected meaning. Depending on what binfmt handlers do in certain cases, there could have been false-positive tests for recursion limits before this change. /* Test program using PTRACE_O_TRACEEXEC. This forks and exec's the first argument with the rest of the arguments, while ptrace'ing. It expects to see one PTRACE_EVENT_EXEC stop and then a successful exit, with no other signals or events in between. Test for kernel doing two PTRACE_EVENT_EXEC stops for a binfmt_misc exec: $ gcc -g traceexec.c -o traceexec $ sudo sh -c 'echo :test:M::foobar::/bin/cat: > /proc/sys/fs/binfmt_misc/register' $ echo 'foobar test' > ./foobar $ chmod +x ./foobar $ ./traceexec ./foobar; echo $? ==> good <== foobar test 0 $ ==> bad <== foobar test unexpected status 0x4057f != 0 3 $ */ #include <stdio.h> #include <sys/types.h> #include <sys/wait.h> #include <sys/ptrace.h> #include <unistd.h> #include <signal.h> #include <stdlib.h> static void wait_for (pid_t child, int expect) { int status; pid_t p = wait (&status); if (p != child) { perror ("wait"); exit (2); } if (status != expect) { fprintf (stderr, "unexpected status %#x != %#x\n", status, expect); exit (3); } } int main (int argc, char **argv) { pid_t child = fork (); if (child < 0) { perror ("fork"); return 127; } else if (child == 0) { ptrace (PTRACE_TRACEME); raise (SIGUSR1); execv (argv[1], &argv[1]); perror ("execve"); _exit (127); } wait_for (child, W_STOPCODE (SIGUSR1)); if (ptrace (PTRACE_SETOPTIONS, child, 0L, (void *) (long) PTRACE_O_TRACEEXEC) != 0) { perror ("PTRACE_SETOPTIONS"); return 4; } if (ptrace (PTRACE_CONT, child, 0L, 0L) != 0) { perror ("PTRACE_CONT"); return 5; } wait_for (child, W_STOPCODE (SIGTRAP | (PTRACE_EVENT_EXEC << 8))); if (ptrace (PTRACE_CONT, child, 0L, 0L) != 0) { perror ("PTRACE_CONT"); return 6; } wait_for (child, W_EXITCODE (0, 0)); return 0; } Reported-by: Arnd Bergmann <arnd@arndb.de> CC: Ulrich Weigand <ulrich.weigand@de.ibm.com> Signed-off-by: Roland McGrath <roland@redhat.com>
* | | lib/idr.c: Fix bug introduced by RCU fixManfred Spraul2008-12-101-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The last patch to lib/idr.c caused a bug if idr_get_new_above() was called on an empty idr. Usually, nodes stay on the same layer. New layers are added to the top of the tree. The exception is idr_get_new_above() on an empty tree: In this case, the new root node is first added on layer 0, then moved upwards. p->layer was not updated. As usual: You shall never rely on the source code comments, they will only mislead you. Signed-off-by: Manfred Spraul <manfred@colorfullife.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | | MN10300: Give correct size when reserving interrupt vector tableAkira Takeuchi2008-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Give the correct size when reserving the interrupt vector table. It should be a page not a single byte. Signed-off-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | | MN10300: Fix __put_user_asm8()Akira Takeuchi2008-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix __put_user_asm8() by jumping to the end label (3:) from the exception handler, rather than jumping back to retry the second store instruction (label 2:). Signed-off-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | | MN10300: Fix the preemption resume_kernel() routineAkira Takeuchi2008-12-101-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix the preemption resume_kernel() routine by inverting the test to see whether interrupts are off (IM7 is all enabled, not all disabled). Furthermore, interrupts should be disabled on entry to resume_kernel() so that they're correctly set for jumping to restore_all() and doing the need reschedule test. Signed-off-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | | MN10300: Discard low-priority Tx interrupts when closing an on-chip serial portAkira Takeuchi2008-12-101-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Discard low-prioriy Tx interrupts when closing an MN10300 on-chip serial port. The MN10300 on-chip serial port uses three interrupts to manage its serial ports: (1) A very high priority interrupt that drives virtual DMA for Rx. (2) A very high priority interrupt that drives virtual DMA for Tx. (3) A normal priority virtual interrupt that does the normal UART interrupt stuff and is shared between Rx and Tx. mn10300_serial_stop_tx() only disables the high priority Tx interrupt. It doesn't also disable the normal priority one because it is shared with Rx. However, the high priority interrupt may interrupt local_irq_disabled() sections, and so may have queued up a low priority virtual interrupt whilst the UART driver is asking for the Tx interrupt to be disabled. The result of this can be an oops when we try to process the interrupt in mn10300_serial_transmit_interrupt() as port->uart.info and port->uart.info->tty may have gone away. To deal with this, if either of those pointers is NULL, we make sure the high-priority Tx interrupt is disabled and discard the interrupt. The low priority interrupt is disabled by the mn10300_serial_pic irq_chip table. Signed-off-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | | MN10300: vmlinux.lds.S cleanup - use PAGE_SIZE, PERCPU macrosCyrill Gorcunov2008-12-101-12/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Include the linux/page.h header into the MN10300 kernel linker script thus allowing us to use PAGE_SIZE macro instead of a numeric constant. Also use the PERCPU macro instead of an explicit section definition. Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | | Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6Linus Torvalds2008-12-102-13/+41
|\ \ \ | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: crypto: api - Disallow cryptomgr as a module if algorithms are built-in
| * | | crypto: api - Disallow cryptomgr as a module if algorithms are built-inHerbert Xu2008-12-102-13/+41
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we have at least one algorithm built-in then it no longer makes sense to have the testing framework, and hence cryptomgr to be a module. It should be either on or off, i.e., built-in or disabled. This just happens to stop a potential runaway modprobe loop that seems to trigger on at least one distro. With fixes from Evgeniy Polyakov. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
* | | Merge branch 'for-linus' of ↵Linus Torvalds2008-12-102-3/+27
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: PCIe: ASPM: Break out of endless loop waiting for PCI config bits to switch PCI: stop leaking 'slot_name' in pci_create_slot
| * | | PCIe: ASPM: Break out of endless loop waiting for PCI config bits to switchThomas Renninger2008-12-091-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makes a Compaq 6735s boot reliably again. It used to hang in the loop on some boots. Give the link one second to train, otherwise break out of the loop and reset the previously set clock bits. Cc: stable@vger.kernel.org Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Matthew Garrett <mjg59@srcf.ucam.org> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
| * | | PCI: stop leaking 'slot_name' in pci_create_slotAlex Chiang2008-12-091-0/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | In pci_create_slot(), the local variable 'slot_name' is allocated by make_slot_name(), but never freed. We never use it after passing it to the kobject core, so we should free it upon function exit. Cc: stable@kernel.org Signed-off-by: Alex Chiang <achiang@hp.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
* | | Merge branch 'release' of ↵Linus Torvalds2008-12-108-86/+171
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: [IA64] SN: prevent IRQ retargetting in request_irq() [IA64] Fix section mismatch ioc3uart_init()/ioc3uart_submodule [IA64] Clear up section mismatch for ioc4_ide_attach_one. [IA64] Clear up section mismatch with arch_unregister_cpu() [IA64] Clear up section mismatch for sn_check_wars. [IA64] Updated the generic_defconfig to work with the 2.6.28-rc7 kernel. [IA64] Fix GRU compile error w/o CONFIG_HUGETLB_PAGE [IA64] eliminate NULL test and memset after alloc_bootmem [IA64] remove BUILD_BUG_ON from paravirt_getreg()
| * | | [IA64] SN: prevent IRQ retargetting in request_irq()John Keller2008-12-091-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the introduction of the generic affinity autoselector, irq_select_affinity(), IRQs are now being retargetted, using a default mask, via the request_irq() path. This results in all IRQs targetted at CPU 0. SN Altix assigns affinity in the SN PROM, and does not expect that to be changed as part of request_irq(). Set the IRQ_AFFINITY_SET flag to prevent request_irq() from resetting affinity. Signed-off-by: John Keller <jpk@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| * | | [IA64] Fix section mismatch ioc3uart_init()/ioc3uart_submoduleTony Luck2008-12-091-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | s/ioc3uart_submodule/ioc3uart_ops/ makes the section mismatch check happy. Signed-off-by: Tony Luck <tony.luck@intel.com>
| * | | [IA64] Clear up section mismatch for ioc4_ide_attach_one.Robin Holt2008-12-091-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The generic_defconfig has three section mismatches. This clears up ioc4_ide_attach_one(). Signed-off-by: Robin Holt <holt@sgi.com> Signed-off-by: Mike Reid <mdr@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| * | | [IA64] Clear up section mismatch with arch_unregister_cpu()Robin Holt2008-12-091-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The generic_defconfig has three section mismatches. This clears arch_unregister_cpu() Signed-off-by: Robin Holt <holt@sgi.com> Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>