Skip to content
  1. Jun 20, 2007
  2. Jun 19, 2007
  3. Jun 18, 2007
  4. Jun 16, 2007
  5. Jun 14, 2007
  6. Jun 13, 2007
  7. Jun 12, 2007
    • Grant Grundler's avatar
      [PARISC] remove global_ack_eiem · 462b529f
      Grant Grundler authored
      
      
      Kudos to Thibaut Varene for spotting the (mis)use of appropriately named
      global_ack_eiem. This took a long time to figure out and both insight
      from myself, Kyle McMartin, and James Bottomley were required to narrow
      down which bit of code could have this race condition.
      
      The symptom was interrupts stopped getting delivered while some workload
      was generating IO interrupts on two different CPUs. One of the interrupt
      sources would get masked off and stay unmasked. Problem was global_ack_eiem
      was accessed with read/modified/write sequence and not protected by
      a spinlock.
      
      PA-RISC doesn't need a global ack flag though. External Interrupts
      are _always_ delivered to a single CPU (except for "global broadcast
      interrupt" which AFAIK currently is not used.) So we don't have to worry
      about any given IRQ vector getting delivered to more than one CPU.
      
      Tested on a500 and rp34xx boxen. rsync to/from gsyprf11 (a500)
      would lock up the box since NIC (tg3) interrupt and SCSI (sym2)
      were on "opposite" CPUs (2 CPU system). Put them on the same CPU
      or apply this patch and 10GB of data would rsync completely.
      
      Please apply the following critical patch.
      
      thanks,
      grant
      
      Signed-off-by: default avatarGrant Grundler <grundler@parisc-linux.org>
      Acked-by: default avatarThibaut VARENE <T-Bone@parisc-linux.org>
      Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
      462b529f
  8. Jun 11, 2007
Loading