Hello, This patch solves a coding problem that was noticed during hotplug driver testing on SGI systems. When a hotpluggable PCI device is introduced to the system, it is linked to a sn_irq_info struct. These sn_irq_info tructs are linked together via a unprotected unidirectional list, which implies FIFO list behaviour. If a PCI device was taken out of service the sn_irq_info struct must be removed. Due to the FIFO nature of the list, the element remove function became cumbersome to code. Since the list was unprotected by locks a race was quickly noticed where sn_irq_info structs were accessed as they were being removed. The fix is to implement a list using the standard list.h structs and to lock using an RCU lock implementation (the list can be accessed in an interrupt context). The attached patch is against latest 2.6 bk pull. P.