XEN VM Boot Error: PCI: Fatal: No config space access function found
While testing Oracle Enterprise Linux 5 on Citrix based VM; It got stuck showing error “PCI: Fatal: No config space access function found” while booting the VM for the first time after installation.
I have searched this error on Internet but didn’t found any perfect solution for the issue. The only information or hint I was able to get is that the problem is related to the OS kernel and para-virtualized kernel (Xen) compatibility.
To diagnose the problem I have decided to check the grub (bootloader) of the VM. Following are the steps to check and edit bootloader of a VM in Citrix.
1) Find VM uuid: first we have to fetch the UUID of the VM (Oracle VM in this case). Use “xe vm-list” to find the VM UUID
uuid ( RO) : 927d0d79-24f3-93d8-1a04-649ef40e92b7
name-label ( RW) : OEL_64bit
power-state ( RO): running
2) Shutdown the VM: Shutdown the VM using Xen Center or you can execute following command to shutdown the VM
[root@test ~]#
3) Edit Boot Loader: execute following command to edit the boot loader
Here, “927d0d79-24f3-93d8-1a04-649ef40e92b7” is the UUID of the VM and “-p 1” is the partition number. After executing the command following screen (Grub) appeared.
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/xvda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server (2.6.32-200.13.1.el5uek)
root (hd0,0)
kernel /vmlinuz-2.6.32-200.13.1.el5uek ro root=/dev/VolGroup00/LogVol00 console=xvc0 rhgb quiet
initrd /initrd-2.6.32-200.13.1.el5uek.img
title Oracle Linux Server-xen (2.6.18-274.el5xen)
root (hd0,0)
kernel /vmlinuz-2.6.18-274.el5xen ro root=/dev/VolGroup00/LogVol00 console=xvc0 rhgb quiet
initrd /initrd-2.6.18-274.el5xen.img
“default=0” shows that the VM is booting with kernel having title “Oracle Linux Server (2.6.32-200.13.1.el5uek)“. So, I have changed the default value from 0 to 1 which will now boot the VM with kernel “Oracle Linux Server-xen (2.6.18-274.el5xen)“. Your Grub file should look like:
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/xvda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server (2.6.32-200.13.1.el5uek)
root (hd0,0)
kernel /vmlinuz-2.6.32-200.13.1.el5uek ro root=/dev/VolGroup00/LogVol00 console=xvc0 rhgb quiet
initrd /initrd-2.6.32-200.13.1.el5uek.img
title Oracle Linux Server-xen (2.6.18-274.el5xen)
root (hd0,0)
kernel /vmlinuz-2.6.18-274.el5xen ro root=/dev/VolGroup00/LogVol00 console=xvc0 rhgb quiet
initrd /initrd-2.6.18-274.el5xen.img
I have started the VM after saving grub, Bingo !! VM booted successfully.
What if I have this error message but my VM boots fine? I’m running Xenserver 6.2 and the VM is centos 6.4…
In other words I see the error message in my VM’s error log but I have no problems booting….