pci express interrupt issues
Did you use the MEMORY IO mapping? The directly pointer access is not suggested, although on the X86 you can do the right thing.
I think the spin_lock/spin_unlock is not necessary. Sometimes it may cause dead-lock.
When you write the "ptr+0xE", you can try to read some device status register to make sure you've written successfully.
Or you can simply "printk" some information after the write operation. I've met the similar problem, then I check the device status register after clear the interrupt. The problem does not occour any more.
May the information can help you.