<domain type='kvm'>
...
<os>
<loader readonly='yes' type='pflash'>/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
<nvram template='/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd'>
...
</os>
</domain>
Once the guest is started, a copy of the NVRAM templace is made an placed under /var/lib/libvirt/qemu/nvram/$DOMAIN_VARS.fd. This then becomes part of the state of the VM.
On the QEMU commandline, you'll need to manually create a copy of the VARS file for each VM and specify the CODE and VARS as:
/usr/libexec/qemu-kvm ... \
-drive if=pflash,format=raw,readonly,file=/path/to/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=/copy/of/OVMF_VARS.fd
I'm also told that virt-install and virt-manager support for OVMF are coming real soon and the interface will be similar to the XML, allowing selection of both a CODE and template VARS files. The libvirt config file, /etc/libvirt/qemu.conf, also allows a default VARS template image to be specified per code image, so that the <nvram> entry gets filled in automatically based on the file used for the <loader> entry.
Finally, how do you tell whether you have a split or unified image for OVMF? Lacking some sort of parser, apparently the best way to tell is by file size. A unified image will be exactly 2MB while the split CODE image will be 2MB-128KB and the VARS image will be 128KB. Unsurprisingly then, you can also create a split image with dd, taking the first 128K as VARS and the rest as CODE.
Good luck.