After an upgrade of one of our internal KVM systems to CentOS 6.2 some of the VMs did not started after boot. When I tried to manually start them via virsh they failed with the following error:
error: internal error unable to reserve PCI address 0:0:2.0
I fixed this by changing the xml that defines this VM:
virsh
edit vm-id
Search for the device with IRQ 2, eg:
<interface type='bridge'>
<mac address='52:54:00:bc:ab:96'/>
<source bridge='br205'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</interface>
Edit this section and change the slot=’0x02′ to some other unique value, eg slot=’0x04′ and save this.
Now you can start the VM without any problem.
This issue seems to happen to more people after an upgrade to 6.2 (see below). The cause does not seem to be known, but it is easily fixed.
References:
https://www.redhat.com/archives/rhelv6-list/2011-December/msg00043.html
http://wiki.eri.ucsb.edu/sysadm/KVM