Following the guide http://www.gentoo.org/doc/en/xen-guide.xml I have a Gentoo host booting into the xen-configured kernel just fine. I copied my /usr/src/linux/vmlinux to /mnt/data/xen/kernel/kernel-xen1 and created the file /mnt/data/xen/configs/1 which has:

I have had exactly the same issue, but it is now solved. The problem was that the backend drivers in the dom0 were not working correctly. In my view that's down to an issue with the way gentoo handles the backend drivers in case they are compiled as kernel modules. The problem dissapeared once I had all backend drivers compiled into the kernel.

The culprit is that the startup script xencommons (which actually is in the source tree) does not appear in any runlevel (and is also not installed into /etc/init.d). If I remember correctly (my system is currently down), gentoo instead uses xenconsoled and xenstored both of which do not load modules through modprobe. The missing xencommons on the other hand does have a lot of modprobe statements that load all required modules for xen.

The file: statement that you used in your example specifically requires a backend driver which relies on the code linked to CONFIG_XEN_GNTDEV being active and that was the one module not loaded in my case. Loading the module

Code:

modprobe xen-gntdev

solved the problem temporarily, compiling it into the kernel solved it permanently.

So on a nutshell you would either need to compile all backend drivers into the kernel or load all required modules prior to starting the guest.

The other option is to use an LVM disk as storage and use the phy: instead of file: - phy does not require the module xen-gntdev.