public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: David Brown <dmlb2000-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: 2.6.21.1 and kvm-21 just plain stopped...
Date: Tue, 1 May 2007 17:20:28 +0100	[thread overview]
Message-ID: <20070501162028.GC3995@redhat.com> (raw)
In-Reply-To: <9c21eeae0704301145w5051a40fgc87e3f1377ebfbba-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 1462 bytes --]

On Mon, Apr 30, 2007 at 11:45:36AM -0700, David Brown wrote:
> > Host cpu type, host bitness, guest bitness, and qemu command line please.
> >
> 
> root@dmlb2010-lappy:~# cat /root/bin/start-debian
> #!/bin/bash
> 
> KVER="2.6.18-4-686"
> INITRD_BASE="initrd"
> INITRD_APPEND=".img"
> APPEND="ro root=/dev/hda1"
> DEV=mapper/VolGroup00-debian
> BOOT=mapper/VolGroup00-debian--boot
> 
> qemu -kernel "/root/boot/vmlinuz-${KVER}" \
>     -initrd "/root/boot/${INITRD_BASE}${INITRD_APPEND}-${KVER}" \
>     -append "${APPEND}" \
>     -m 512 --no-rtc \
>     \
>     -usb \
>     -soundhw es1370 \
>     -net nic,vlan0,macaddr=52:54:56:34:12:00 \
>     -net tap,vlan=0,ifname=tap0 \
>     -hdb "/dev/$BOOT" \
>     /dev/$DEV
> root@dmlb2010-lappy:~#

How big is your initrd image ?  There was a QEMU bug which causes the
end of the initrd to be overwritten by the kernel if the initd was
larger than 1 MB IIRC.  Upstream QEMU CVS has the patch, but the current
KVM SVN repo does not seem to have it. I'm attaching the patch we applied
to KVM-19's copy of QEMU in Fedora to fix, although it doesn't apply cleanly
to current KVM dev. 

Regards,
Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 

[-- Attachment #2: kvm-19-initrd.patch --]
[-- Type: text/plain, Size: 2923 bytes --]

Index: hw/pc.c
===================================================================
RCS file: /sources/qemu/qemu/hw/pc.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -p -r1.71 -r1.72
--- hw/pc.c	5 Mar 2007 19:44:02 -0000	1.71
+++ hw/pc.c	31 Mar 2007 19:41:22 -0000	1.72
@@ -32,9 +32,11 @@
 #define LINUX_BOOT_FILENAME "linux_boot.bin"
 
 #define KERNEL_LOAD_ADDR     0x00100000
-#define INITRD_LOAD_ADDR     0x00600000
+#define MAX_INITRD_LOAD_ADDR 0x38000000
 #define KERNEL_PARAMS_ADDR   0x00090000
 #define KERNEL_CMDLINE_ADDR  0x00099000
+/* Leave a chunk of memory at the top of RAM for the BIOS ACPI tables.  */
+#define ACPI_DATA_SIZE       0x10000
 
 static fdctrl_t *floppy_controller;
 static RTCState *rtc_state;
@@ -452,6 +454,7 @@ static void pc_init1(int ram_size, int v
     char buf[1024];
     int ret, linux_boot, initrd_size, i;
     ram_addr_t ram_addr, vga_ram_addr, bios_offset, vga_bios_offset;
+    ram_addr_t initrd_offset;
     int bios_size, isa_bios_size, vga_bios_size;
     PCIBus *pci_bus;
     int piix3_devfn = -1;
@@ -599,8 +602,28 @@ static void pc_init1(int ram_size, int v
         
         /* load initrd */
         initrd_size = 0;
+        initrd_offset = 0;
         if (initrd_filename) {
-            initrd_size = load_image(initrd_filename, phys_ram_base + INITRD_LOAD_ADDR);
+            initrd_size = get_image_size (initrd_filename);
+            if (initrd_size > 0) {
+                initrd_offset = (ram_size - initrd_size) & TARGET_PAGE_MASK;
+                /* Leave space for BIOS ACPI tables.  */
+                initrd_offset -= ACPI_DATA_SIZE;
+                /* Avoid the last 64k to avoid 2.2.x kernel bugs.  */
+                initrd_offset -= 0x10000;
+                if (initrd_offset > MAX_INITRD_LOAD_ADDR)
+                    initrd_offset = MAX_INITRD_LOAD_ADDR;
+
+                if (initrd_size > ram_size
+                    || initrd_offset < KERNEL_LOAD_ADDR + ret) {
+                    fprintf(stderr,
+                            "qemu: memory too small for initial ram disk '%s'\n",
+                            initrd_filename);
+                    exit(1);
+                }
+                initrd_size = load_image(initrd_filename,
+                                         phys_ram_base + initrd_offset);
+            }
             if (initrd_size < 0) {
                 fprintf(stderr, "qemu: could not load initial ram disk '%s'\n", 
                         initrd_filename);
@@ -608,7 +631,7 @@ static void pc_init1(int ram_size, int v
             }
         }
         if (initrd_size > 0) {
-            stl_raw(phys_ram_base + KERNEL_PARAMS_ADDR + 0x218, INITRD_LOAD_ADDR);
+            stl_raw(phys_ram_base + KERNEL_PARAMS_ADDR + 0x218, initrd_offset);
             stl_raw(phys_ram_base + KERNEL_PARAMS_ADDR + 0x21c, initrd_size);
         }
         pstrcpy(phys_ram_base + KERNEL_CMDLINE_ADDR, 4096,

[-- Attachment #3: Type: text/plain, Size: 286 bytes --]

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

[-- Attachment #4: Type: text/plain, Size: 186 bytes --]

_______________________________________________
kvm-devel mailing list
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/kvm-devel

  parent reply	other threads:[~2007-05-01 16:20 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-30 16:45 2.6.21.1 and kvm-21 just plain stopped David Brown
     [not found] ` <9c21eeae0704300945p26b434c3k9af09f7c452d9cc4-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-04-30 18:12   ` Avi Kivity
     [not found]     ` <463631A4.5070704-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-04-30 18:45       ` David Brown
     [not found]         ` <9c21eeae0704301145w5051a40fgc87e3f1377ebfbba-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-01  6:18           ` Avi Kivity
     [not found]             ` <4636DBA8.8050906-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-05-01 16:05               ` David Brown
     [not found]                 ` <9c21eeae0705010905t3646f104ge934e472ecc0d49-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-05-01 16:13                   ` Avi Kivity
2007-05-01 16:20           ` Daniel P. Berrange [this message]
     [not found]             ` <20070501162028.GC3995-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2007-05-02  0:57               ` David Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070501162028.GC3995@redhat.com \
    --to=berrange-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=dmlb2000-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox