I'm interested in a working native compile too, but it's hard to debug without any output.
I found that the "earlyprintk=ttyMFD2,keep" on the kernel command line isn't the right way to get early kernel output. There's a separate driver in arch/x86/platform/intel-mid/early_printk_intel_mid.c that's being built into the kernel by the Yocto configs. Unfortunately the driver is a little broken and doesn't hit the right baud rate on Edison.
Here's a patch to fix the baud to come up at 115200n8 on Edison:
--- linux-3.10.17orig/arch/x86/platform/intel-mid/early_printk_intel_mid.c 2014-11-26 00:30:58.591348757 -0600
+++ linux-3.10.17/arch/x86/platform/intel-mid/early_printk_intel_mid.c 2014-11-26 00:32:15.011347258 -0600
@@ -444,6 +444,8 @@
/* detect HSU clock is 50M or 19.2M */
if (clkctl && *clkctl & (1 << 16))
writel(0x0120, phsu + UART_MUL * 4); /* for 50M */
+ else if (*clkctl & (1 << 31))
+ writel(0x02EE, phsu + UART_MUL * 4); /* for 38.4M */
else
writel(0x05DC, phsu + UART_MUL * 4); /* for 19.2M */
} else
You'll need to set earlyprintk=hsu2,keep and you'll want to crank up the loglevel=8. You can do this in the Yocto build U-Boot edison.env file, or use setenv/saveenv in U-Boot directly.
From the little I've played with it, the kernel seems to flip out at the end of the virtio_rpmsg_bus messages. If I comment out the platform_device_register() in arch/x86/platform/intel-mid/intel_mid_scu.c then the kernel gets all the way to trying to mount root (but fails when reading from mmc for some reason). No idea how the Yocto toolchain makes this work.