Apologies if this has been gone over, but I believe I have checked the intertubes more than a bit.....

I am using libvirt and have vms booting under an OVMF.fd to use an efi firmware. I can create vms, linux ubuntu, and they will boot up. However, everytime I reboot am I dropped into the default efi shell provide by the tianocore build.
Then I must walk the FS to the booting efi app and run, in this case grubx64.efi, to actually finish booting the host.
I had tried adding boot entries with efibootmgr within the OS and also bcfg with the efi shell. I get no errors when adding an entry, and the new entry shows up and I can manipulate the entry i.e. set it to next boot and the like. Soon as I reboot I get dumped back to efi shell. 

Am I missing something? Are the var changes not being stored? Is there someplace to look for an error perhaps?

I also can use the same efi bootloader under libvirt to boot a hybrid iso. location of the efi application on the hybrid iso is /EFI/boot/bootx64.efi. Drops me right into my grub menu, after falling thru from EFI FLOPPY1 and EFI FLOPPY2 to EFI DVD
So since that was/is working,  tried adding that to my efi partition so it has /EFI/boot/bootx64.efi. The thinking being that since I can't add an entry, I will setup for the "known" efi boot path. Of course that didn't work either

I am on arch linux:

Linux X 4.4.5-1-ARCH #1 SMP PREEMPT Thu Mar 10 07:38:19 CET 2016 x86_64 GNU/Linux
local/libvirt 1.3.2-3
    API for controlling virtualization engines (openvz,kvm,qemu,virtualbox,xen,etc)
local/libvirt-python 1.3.1-1
    libvirt python binding

UEFI:
Shell> ver
UEFI Interactive Shell v2.1
EDK II
UEFI v2.50 (EDK II, 0x00010000)


for this host....my nvram setting look like
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.5'>hvm</type>
    <loader readonly='yes' type='pflash'>/home/xyz/OVMF.fd</loader>
    <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/X_VARS.fd</nvram>
    <boot dev='hd'/>
  </os>