Atomic PCI-space accesses

These bugs would be very difficult to debug.  If the lock turns out to
be too expensive for bulk PCI ops, we can expose the lock and make some
__pci* versions.