01 Jan, 2009

1 commit


11 Dec, 2008

4 commits

  • Give the correct size when reserving the interrupt vector table. It should be
    a page not a single byte.

    Signed-off-by: Akira Takeuchi
    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    Akira Takeuchi
     
  • 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
    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    Akira Takeuchi
     
  • 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
    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    Akira Takeuchi
     
  • 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
    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    Cyrill Gorcunov
     

04 Dec, 2008

1 commit


03 Dec, 2008

1 commit

  • This fixes the MN10300 kernel module linking to match the toolchain. RELA
    relocs don't use the value at the location being relocated. This has been
    working because the tools always leave the value at the target location
    cleared.

    Signed-off-by: Mark Salter
    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    Mark Salter
     

01 Dec, 2008

1 commit


20 Oct, 2008

1 commit

  • Change mn10300 to use the new bcd2bin/bin2bcd functions instead of the
    obsolete BCD_TO_BIN/BIN_TO_BCD macros.

    Signed-off-by: Adrian Bunk
    Acked-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     

02 Oct, 2008

1 commit

  • Fix the IRQ handling on the MN10300 arch.

    This patch makes a number of significant changes:

    (1) It separates the irq_chip definition for edge-triggered interrupts from
    the one for level-triggered interrupts.

    This is necessary because the MN10300 PIC latches the IRQ channel's
    interrupt request bit (GxICR_REQUEST), even after the device has ceased to
    assert its interrupt line and the interrupt channel has been disabled in
    the PIC. So for level-triggered interrupts we need to clear this bit when
    we re-enable - which is achieved by setting GxICR_DETECT but not
    GxICR_REQUEST when writing to the register.

    Not doing this results in spurious interrupts occurring because calling
    mask_ack() at the start of handle_level_irq() is insufficient - it fails
    to clear the REQUEST latch because the device that caused the interrupt is
    still asserting its interrupt line at this point.

    (2) IRQ disablement [irq_chip::disable_irq()] shouldn't clear the interrupt
    request flag for edge-triggered interrupts lest it lose an interrupt.

    (3) IRQ unmasking [irq_chip::unmask_irq()] also shouldn't clear the interrupt
    request flag for edge-triggered interrupts lest it lose an interrupt.

    (4) The end() operation is now left to the default (no-operation) as
    __do_IRQ() is compiled out. This may affect misrouted_irq(), but
    according to Thomas Gleixner it's the correct thing to do.

    (5) handle_level_irq() is used for edge-triggered interrupts rather than
    handle_edge_irq() as the MN10300 PIC latches interrupt events even on
    masked IRQ channels, thus rendering IRQ_PENDING unnecessary. It is
    sufficient to call mask_ack() at the start and unmask() at the end.

    (6) For level-triggered interrupts, ack() is now NULL as it's not used, and
    there is no effective ACK function on the PIC. mask_ack() is now the
    same as mask() as the latch continues to latch, even when the channel is
    masked.

    Further, the patch discards the disable() op implementation as its now the same
    as the mask() op implementation, which is used instead.

    It also discards the enable() op implementations as they're now the same as
    the unmask() op implementations, which are used instead.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     

25 Sep, 2008

1 commit

  • Make sched_clock() report time since boot rather than time since last
    timer interrupt.

    Make sched_clock() expand and scale the 32-bit TSC value running at
    IOCLK speed (~33MHz) to a 64-bit nanosecond counter, using cnt32_to_63()
    acquired from the ARM arch and without using slow DIVU instructions
    every call.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     

24 Aug, 2008

1 commit


05 Aug, 2008

1 commit


02 Aug, 2008

1 commit


27 Jul, 2008

1 commit


21 Jul, 2008

1 commit


05 Jul, 2008

2 commits


17 Jun, 2008

1 commit


17 May, 2008

1 commit


04 May, 2008

1 commit

  • This replaces the duplicated arch-specific versions of "sys_pipe()" with
    one unified implementation. This removes almost 250 lines of duplicated
    code.

    It's marked __weak, so that *if* an architecture wants to override the
    default implementation it can do so by simply having its own replacement
    version, since many architectures use alternate calling conventions for
    the 'pipe()' system call for legacy reasons (ie traditional UNIX
    implementations often return the two file descriptors in registers)

    I still haven't changed the cris version even though Linus says the BKL
    isn't needed. The arch maintainer can easily do it if there are really
    no obstacles.

    Signed-off-by: Ulrich Drepper
    Signed-off-by: Linus Torvalds

    Ulrich Drepper
     

29 Apr, 2008

1 commit


17 Apr, 2008

1 commit

  • Semaphores are no longer performance-critical, so a generic C
    implementation is better for maintainability, debuggability and
    extensibility. Thanks to Peter Zijlstra for fixing the lockdep
    warning. Thanks to Harvey Harrison for pointing out that the
    unlikely() was unnecessary.

    Signed-off-by: Matthew Wilcox
    Acked-by: Ingo Molnar

    Matthew Wilcox
     

20 Feb, 2008

3 commits


09 Feb, 2008

1 commit

  • Add architecture support for the MN10300/AM33 CPUs produced by MEI to the
    kernel.

    This patch also adds board support for the ASB2303 with the ASB2308 daughter
    board, and the ASB2305. The only processor supported is the MN103E010, which
    is an AM33v2 core plus on-chip devices.

    [akpm@linux-foundation.org: nuke cvs control strings]
    Signed-off-by: Masakazu Urade
    Signed-off-by: Koichi Yasutake
    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells