• Mark Salter's avatar
    MN10300: fix serial port vdma irq setup for SMP · 8d160027
    Mark Salter authored
    The builtin SoC serial ports have no FIFOs and use a virtual DMA mechanism
    based on high priority IRQs to avoid overruns. These high priority interrupts
    are pinned to cpu#0 on SMP systems. This patch fixes a problem with SMP where
    the set_intr_level() interface is used to set the priority for these IRQs. The
    set_intr_level() function sets priority on the local cpu but on SMP systems,
    this code may be run on some other cpu than the one handling the interrupts.
    Instead of setting interrupt level explicitly, this patch uses a special
    irq_chip for these interrupts so that the mask/unmask methods can set the
    interrupt level implicitly.
    Signed-off-by: default avatarMark Salter <msalter@redhat.com>
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    8d160027
mn10300-serial.c 42.4 KB