Hi Gerd, This change deserves a comment, as it's not obvious what we're doing here. How about: """ When using an external firmware on x86, kvmtool follows the legacy BIOS standard, by entering firmware at address 0xffff0 in 16bit real mode. SeaBIOS images built for emulators follow this convention by having their reset vector 16 bytes before the end of the image. In order to support images of arbitrary size, move the image at the end of the BIOS region. """ Thanks, Jean On 06/11/17 11:48, Gerd Hoffmann wrote: > --- > x86/boot.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/x86/boot.c b/x86/boot.c > index 61535eb57b..b7a4262d89 100644 > --- a/x86/boot.c > +++ b/x86/boot.c > @@ -28,7 +28,7 @@ bool kvm__load_firmware(struct kvm *kvm, const char *firmware_filename) > if (st.st_size > MB_FIRMWARE_BIOS_SIZE) > die("firmware image %s is too big to fit in memory (%Lu KB).\n", firmware_filename, (u64)(st.st_size / 1024)); > > - p = guest_flat_to_host(kvm, MB_FIRMWARE_BIOS_BEGIN); > + p = guest_flat_to_host(kvm, MB_BIOS_END + 1 - st.st_size); > > while ((nr = read(fd, p, st.st_size)) > 0) > p += nr; >