1. 12 Jun, 2007 1 commit
    • 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
  2. 04 Jun, 2007 1 commit
  3. 03 Jun, 2007 1 commit
    • Kyle McMartin's avatar
      [PARISC] Fix bug when syscall nr is __NR_Linux_syscalls · 3bb457af
      Kyle McMartin authored
      The bug was that we were comparing __NR_syscalls to be greater or equal
      to the syscall number stored in %r20. __NR_syscalls is one greater than
      the last syscall though, so we're loading one entry beyond the end of the
      syscall table, and trying to jump to it.
      
      Fix this by only checking that we're greater, alternatively, we could
      have compared to (__NR_Linux_syscalls - 1)
      Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
      3bb457af
  4. 30 May, 2007 7 commits
  5. 27 May, 2007 8 commits
  6. 25 May, 2007 2 commits
  7. 23 May, 2007 10 commits
  8. 22 May, 2007 10 commits