It also may be overridden by some conf file. For example, if you are using a i.MX cpus, you may have some conf file on meta-freescale that override this variable with something like: PREFERRED_PROVIDER_virtual/kernel_imx = "some kernel" I had a situation like this on a imx6 xpu, and had to specify the "_imx" override in order to make it work. "bitbake - e virtual/kernel | grep PREFERRED_PROVIDER_virtual/kernel" is your friend. It will show you the current variable selected, and also the different overrides available.