]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
kvm: Fix bzImage setup sector default count
authorPekka Enberg <penberg@cs.helsinki.fi>
Sat, 27 Mar 2010 07:54:58 +0000 (09:54 +0200)
committerPekka Enberg <penberg@cs.helsinki.fi>
Sat, 27 Mar 2010 07:54:58 +0000 (09:54 +0200)
If setup sectors is zero, the real value is 4 as per
Documentation/x86/boot.txt.

Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
tools/kvm/kvm.c

index a0031c0d97bd45678669175c64d6fa6441a4e75d..079df0ede9cc3566ae51994d2ee2f23aa0546b38 100644 (file)
@@ -194,8 +194,11 @@ static int load_flat_binary(struct kvm *kvm, int fd)
 
 static const char *BZIMAGE_MAGIC       = "HdrS";
 
+#define BZ_DEFAULT_SETUP_SECTS         4
+
 static bool load_bzimage(struct kvm *kvm, int fd)
 {
+       unsigned long setup_sects;
        struct boot_params boot;
        ssize_t setup_size;
        void *p;
@@ -209,7 +212,11 @@ static bool load_bzimage(struct kvm *kvm, int fd)
         if (memcmp(&boot.hdr.header, BZIMAGE_MAGIC, strlen(BZIMAGE_MAGIC)) != 0)
                return false;
 
-       setup_size = (boot.hdr.setup_sects + 1) * 512;
+       setup_sects = boot.hdr.setup_sects + 1;
+       if (setup_sects == 0)
+               setup_sects      = BZ_DEFAULT_SETUP_SECTS;
+
+       setup_size = setup_sects << 4;
        p = guest_addr_to_host(kvm, BZ_BOOT_LOADER_START);
 
        if (read(fd, p, setup_size) != setup_size)