Changeset f6cf76f in mainline for kernel/arch/mips32


Ignore:
Timestamp:
2019-04-05T18:30:19Z (7 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
29beac8
Parents:
f4bb404
Message:

Move PIC spurious IRQ handling into arch code

As each architecture or even machine does IRQs differently, the genarch
i8259 driver cannot register the PIC spurious IRQ interrupt itself.

Location:
kernel/arch/mips32
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/mips32/include/arch/mach/malta/malta.h

    rf4bb404 rf6cf76f  
    4545
    4646#define PIC0_BASE               (MALTA_PCI_BASE + 0x20)
     47#define PIC0_SPURIOUS_IRQ       7
    4748#define PIC1_BASE               (MALTA_PCI_BASE + 0xa0)
     49#define PIC1_SPURIOUS_IRQ       15
    4850
    4951#define ISA_IRQ_COUNT           16
  • kernel/arch/mips32/src/mach/malta/malta.c

    rf4bb404 rf6cf76f  
    7474{
    7575        uint8_t isa_irq = host2uint32_t_le(pio_read_32(GT64120_PCI0_INTACK));
     76        if (isa_irq == PIC0_SPURIOUS_IRQ || isa_irq == PIC1_SPURIOUS_IRQ) {
     77                /*
     78                 * XXX: Examine ISR to figure out whether this is indeed a
     79                 *      spurious or actual IRQ.
     80                 */
     81#ifdef CONFIG_DEBUG
     82                log(LF_ARCH, LVL_DEBUG, "cpu%u: PIC spurious interrupt",
     83                    CPU->id);
     84                return;
     85#endif
     86        }
    7687        irq_t *irq = irq_dispatch_and_lock(isa_irq);
    7788        if (irq) {
Note: See TracChangeset for help on using the changeset viewer.