I get the same issue on Debian Buster when migrating from an Intel Xeon to AMD Epyc machines.
Loading a LiveCD and reinstalling Grub in the VM is the work around. I don’t know why EFI fails to find a perfectly valid disk once the underlying machine changes, but it’s not destructive to your data.
It’s also why I completely ignore the existence of EFI on virtual machines and never deviate from the default BIOS setup.
Migration between qemu versions is normally fine, you’re just not able to migrate back to a lower version. Offline migration should always work tho.
This might be because you did not copy over the nvram of the virtual machine that contains the information on what EFI the UEFI should load on boot.
If you enter the following commands, the vm should just boot:
fs0:
cd EFI
dir
cd $(The directory in question)
dir
$( sth.efi most sth like grubarm64.efi)
Normally the fallback for a EFI-System to boot into would be EFI\BOOT\BOOTX64.EFI, but since you’re on arm, I don’t know if that’s the same or it’s something like BOOTARM64.EFI.
To make to boot entry persistent you’ll need to create a new one with efibootmgr: