• Ishizaki Kou's avatar
    spidernet: fix interrupt reason recognition · a041fe2e
    Ishizaki Kou authored
    This patch solves a problem that the spidernet driver sometimes fails
    to handle IRQ.
    
    The problem happens because,
    - In Cell architecture, interrupts may arrive at an interrupt
      controller, even if they are masked by the setting on registers of
      devices. It happens when interrupt packets are sent just before
      the interrupts are masked.
    - spidernet interrupt handler compares interrupt reasons with
      interrupt masks, so when such interrupts occurs, spidernet interrupt
      handler returns IRQ_NONE.
    - When all of interrupt handler return IRQ_NONE, linux kernel disables
      the IRQ and it no longer delivers interrupts to the interrupt handlers.
    
    spidernet doesn't work after above sequence, because it can't receive
    interrupts.
    
    This patch changes spidernet interrupt handler that it compares
    interrupt reason with SPIDER_NET_INTX_MASK_VALUE.
    Signed-off-by: default avatarKou Ishizaki <kou.ishizaki@toshiba.co.jp>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    a041fe2e
spider_net.c 70.9 KB