All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aurelien Jarno <aurelien@aurel32.net>
To: linux-mips@linux-mips.org
Cc: Daniel Jacobowitz <dan@debian.org>
Subject: Re: qemu initrd and ide support
Date: Mon, 23 Oct 2006 13:45:53 +0200	[thread overview]
Message-ID: <20061023114553.GA31520@bode.aurel32.net> (raw)
In-Reply-To: <452F9744.9010109@aurel32.net>

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

On Fri, Oct 13, 2006 at 03:40:20PM +0200, Aurelien Jarno wrote:
> Hi!
Hi!

> Daniel Jacobowitz a écrit :
> >These patches for qemu let IDE and initrd work in the defconfig.
> >It seems to function - I was able to get as far as partitioning
> >the drive in the debian installer and the next time I started qemu
> >the new partitions were found.  But the installer hangs up trying
> >to format swap.
> >
> >Of course, what would be really nice would be a PCI controller.
> >I'm not brave enough to try.
> >
> >I'm not going to submit the qemu change until I have some better
> >evidence that it all works right (or someone else does).
> >
> 
> First of all, thanks a lot for your work, that makes QEMU mips more usable.
> 
> The IDE part works very well, though there seems to be some problems 
> with userland tools (mke2fs), an instruction is probably not/bad 
> emulated. I now have a system with the root on the IDE drive and with swap.
> 
> The initrd seems to works well, but it generates a strange failure 
> during the boot:
> 
> [...]
> Mount-cache hash table entries: 512
> Checking for 'wait' instruction...  available.
> checking if image is initramfs...it isn't (bad gzip magic numbers); 
> looks like an initrd
> Bad page state in process 'swapper'
> page:81010000 flags:0x00080000 mapping:00000000 mapcount:0 count:0
> Trying to fix it up, but a reboot is needed
> Backtrace:
> Call Trace:
>  [<8005c748>] bad_page+0x68/0xa8
>  [<8005ccf0>] free_hot_cold_page+0x1a4/0x1b4
>  [<802a0000>] ic_bootp_recv+0x238/0x6a0
>  [<80080138>] __fput+0x14c/0x1cc
>  [<8001b094>] free_init_pages+0xa4/0xfc
>  [<802a0000>] ic_bootp_recv+0x238/0x6a0
>  [<802a0000>] ic_bootp_recv+0x238/0x6a0
>  [<802a0000>] ic_bootp_recv+0x238/0x6a0
>  [<80288d98>] free_initrd+0x28/0x44
>  [<80288e80>] populate_rootfs+0xcc/0x110
>  [<80292860>] spawn_softlockup_task+0x30/0x50
>  [<80010498>] init+0x54/0x300
>  [<80010498>] init+0x54/0x300
>  [<80013074>] kernel_thread_helper+0x10/0x18
>  [<80013064>] kernel_thread_helper+0x0/0x18
> 
> Freeing initrd memory: 2520k freed
> NET: Registered protocol family 16
> NET: Registered protocol family 2
> [...]

As discussed on IRC, it seems the oops does not occurs on all system,
but we don't know what trigger it.

Alternatively, please find attached a patch to QEMU to pass the initrd
arguments directly in text, so that no modifications are needed in the
kernel.

-- 
  .''`.  Aurelien Jarno	            | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   aurel32@debian.org         | aurelien@aurel32.net
   `-    people.debian.org/~aurel32 | www.aurel32.net

[-- Attachment #2: mips-qemu-initrd.patch --]
[-- Type: text/plain, Size: 1974 bytes --]

Index: hw/mips_r4k.c
===================================================================
RCS file: /sources/qemu/qemu/hw/mips_r4k.c,v
retrieving revision 1.20
diff -u -d -p -r1.20 mips_r4k.c
--- hw/mips_r4k.c	18 Sep 2006 01:15:29 -0000	1.20
+++ hw/mips_r4k.c	23 Oct 2006 10:35:54 -0000
@@ -117,7 +117,7 @@ void mips_r4k_init (int ram_size, int vg
     unsigned long bios_offset;
     int ret;
     CPUState *env;
-    long kernel_size;
+    long kernel_size, initrd_size;
 
     env = cpu_init();
     register_savevm("cpu", 0, 3, cpu_save, cpu_load, env);
@@ -158,10 +158,11 @@ void mips_r4k_init (int ram_size, int vg
 	}
 
         /* load initrd */
+        initrd_size = 0;
         if (initrd_filename) {
-            if (load_image(initrd_filename,
-			   phys_ram_base + INITRD_LOAD_ADDR + VIRT_TO_PHYS_ADDEND)
-		== (target_ulong) -1) {
+            initrd_size = load_image(initrd_filename,
+                                     phys_ram_base + INITRD_LOAD_ADDR + VIRT_TO_PHYS_ADDEND);
+            if (initrd_size == (target_ulong) -1) {
                 fprintf(stderr, "qemu: could not load initial ram disk '%s'\n", 
                         initrd_filename);
                 exit(1);
@@ -169,7 +170,17 @@ void mips_r4k_init (int ram_size, int vg
         }
 
 	/* Store command line.  */
-        strcpy (phys_ram_base + (16 << 20) - 256, kernel_cmdline);
+        if (initrd_size > 0) {
+            ret = sprintf(phys_ram_base + (16 << 20) - 256, 
+                          "rd_start=0x%08x rd_size=%li ",
+                          INITRD_LOAD_ADDR,
+                          initrd_size);
+            strcpy (phys_ram_base + (16 << 20) - 256 + ret, kernel_cmdline);
+	}
+	else {
+            strcpy (phys_ram_base + (16 << 20) - 256, kernel_cmdline);
+	}
+
         /* FIXME: little endian support */
         *(int *)(phys_ram_base + (16 << 20) - 260) = tswap32 (0x12345678);
         *(int *)(phys_ram_base + (16 << 20) - 264) = tswap32 (ram_size);

  parent reply	other threads:[~2006-10-23 11:49 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-12 21:12 qemu initrd and ide support Daniel Jacobowitz
2006-10-13 13:40 ` Aurelien Jarno
2006-10-20 15:48   ` Aurelien Jarno
2006-10-23 11:45   ` Aurelien Jarno [this message]
2006-10-24 13:08   ` Aurelien Jarno
2006-10-24 15:17     ` Daniel Jacobowitz

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=20061023114553.GA31520@bode.aurel32.net \
    --to=aurelien@aurel32.net \
    --cc=dan@debian.org \
    --cc=linux-mips@linux-mips.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.