grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Grub2 can not detect usb disk


From: Cui Lei
Subject: Re: Grub2 can not detect usb disk
Date: Thu, 30 Jun 2011 10:38:29 +0800
User-agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20110627 Thunderbird/5.0

I have found the the last version which can boot my machine,  it is the r2348. The r2349 can not boot it.
So I checked out the changelog from 2348 to 2349 :

/*************************************************************************************************************/
=== modified file 'ChangeLog'
--- ChangeLog    2010-05-01 12:06:53 +0000
+++ ChangeLog    2010-05-01 12:32:48 +0000
@@ -1,5 +1,20 @@
 2010-05-01  Vladimir Serbinenko  <address@hidden>
 
+    Use LBIO on coreboot.
+
+    * conf/i386-coreboot.rmk (kernel_img_SOURCES): Change
+    kern/i386/multiboot_mmap.c to kern/i386/coreboot/mmap.c.
+    * include/grub/i386/coreboot/memory.h (GRUB_LINUXBIOS_MEMBER_LINK):
+    New declaration.
+    * kern/i386/coreboot/init.c (grub_machine_init): Don't call
+    grub_machine_mmap_init on coreboot.
+    * kern/i386/coreboot/mmap.c (grub_linuxbios_table_iterate): Handle
+    GRUB_LINUXBIOS_MEMBER_LINK.
+    (grub_machine_mmap_iterate): Fix declaration.
+    * kern/i386/coreboot/startup.S: Don't save mbi location on coreboot.
+
+2010-05-01  Vladimir Serbinenko  <address@hidden>
+
     Split coreboot and multiboot ports.
 
     * conf/i386-multiboot.rmk: New file.

=== modified file 'conf/i386-coreboot.rmk'
--- conf/i386-coreboot.rmk    2010-04-10 23:14:31 +0000
+++ conf/i386-coreboot.rmk    2010-05-01 12:32:48 +0000
@@ -10,7 +10,7 @@
 kernel_img_SOURCES = kern/i386/coreboot/startup.S \
     kern/i386/misc.S \
     kern/i386/coreboot/init.c \
-    kern/i386/multiboot_mmap.c \
+       kern/i386/coreboot/mmap.c \
     kern/i386/halt.c \
     kern/main.c kern/device.c \
     kern/disk.c kern/dl.c kern/file.c kern/fs.c kern/err.c \

=== modified file 'include/grub/i386/coreboot/memory.h'
--- include/grub/i386/coreboot/memory.h    2008-11-20 20:30:24 +0000
+++ include/grub/i386/coreboot/memory.h    2010-05-01 12:32:48 +0000
@@ -44,8 +44,9 @@
 
 struct grub_linuxbios_table_item
 {
-#define GRUB_LINUXBIOS_MEMBER_UNUSED        0
-#define GRUB_LINUXBIOS_MEMBER_MEMORY        1
+#define GRUB_LINUXBIOS_MEMBER_UNUSED        0x00
+#define GRUB_LINUXBIOS_MEMBER_MEMORY        0x01
+#define GRUB_LINUXBIOS_MEMBER_LINK              0x11
   grub_uint32_t tag;
   grub_uint32_t size;
 };

=== modified file 'kern/i386/coreboot/init.c'
--- kern/i386/coreboot/init.c    2010-02-06 23:52:31 +0000
+++ kern/i386/coreboot/init.c    2010-05-01 12:32:48 +0000
@@ -117,7 +117,9 @@
     return 0;
   }
 
+#ifdef GRUB_MACHINE_MULTIBOOT
   grub_machine_mmap_init ();
+#endif
   grub_machine_mmap_iterate (heap_init);
 
   grub_tsc_init ();

=== modified file 'kern/i386/coreboot/mmap.c'
--- kern/i386/coreboot/mmap.c    2008-08-17 16:32:18 +0000
+++ kern/i386/coreboot/mmap.c    2010-05-01 12:32:48 +0000
@@ -57,13 +57,23 @@
                    (long) table_header->size);
   for (; table_item->size;
        table_item = (grub_linuxbios_table_item_t) ((long) table_item + (long) table_item->size))
-    if (hook (table_item))
-      return 1;
+    {
+      if (table_item->tag == GRUB_LINUXBIOS_MEMBER_LINK
+         && check_signature ((grub_linuxbios_table_header_t) (grub_addr_t)
+                             *(grub_uint64_t *) (table_item + 1)))
+       {
+         table_header = (grub_linuxbios_table_header_t) (grub_addr_t)
+           *(grub_uint64_t *) (table_item + 1);
+         goto signature_found;  
+       }
+      if (hook (table_item))
+       return 1;
+    }
 
   return 0;
 }
 
-void
+grub_err_t
 grub_machine_mmap_iterate (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uint64_t, grub_uint32_t))
 {
   mem_region_t mem_region;

=== modified file 'kern/i386/coreboot/startup.S'
--- kern/i386/coreboot/startup.S    2009-12-24 14:09:06 +0000
+++ kern/i386/coreboot/startup.S    2010-05-01 12:32:48 +0000
@@ -66,10 +66,12 @@
     .long    -0x1BADB002 - MULTIBOOT_MEMORY_INFO
 
 codestart:
+#ifdef GRUB_MACHINE_MULTIBOOT
     cmpl    $MULTIBOOT_BOOTLOADER_MAGIC, %eax
     jne 0f
     movl    %ebx, EXT_C(startup_multiboot_info)
 0:
+#endif
 
     /* initialize the stack */
     movl $GRUB_MEMORY_MACHINE_PROT_STACK, %esp

/***********************************************************************************************************************/

I guess it may be because the file "kern/i386/coreboot/mmap.c", but it has too much diffs with the multiboot_mmap.c
and I am not familiar with the mmap at all, so I don't know how to found out the causes.

Rock.

 On 28.06.2011 12:02, Cui Lei wrote:
Sorry , I don't know what the meaning of the "bisect" and how to do?
Could you tell me some message in detail ?
You take a revision which doesn't work (1.99rc2 = r3229)  and a working
one (1.98 = r2249). Then you try a revision in the middle, e.g. r2749.
If it works the error is in the range 2749..3229, otherwise in
2249..2749, then you try a revision inside this range and in 10 steps
you'll have the exact revision which causes your problem.
Thanks a lot.

BRs,

Rock.

On 28.06.2011 10:45, Rock Cui wrote:
I had tried to use the grub1.99rc2 as a payload of coreboot at the
beginning, but it can not boot my machine,
Could you try to bisect? Recent bzr worked fine in qemu+coreboot. Your
machine may present some special aspect and bisect is probably the
fastest way in your case.
so I changed to 1.98
As I said USB support in 1.98 wasn't good enough. Basically it worked
only in qemu.
, then booting succeed. I want to insmod the uhci.mod and usbms.mod to
support USB,
but they are not exit in my build folder. If I run "configure" with
"--with-platform=pc", they will be there, but
with "--with-platform=coreboot", I can not found them. I don't know
what should I do to get them for i386-coreboot, so I use the two
modules which were built with "--with-platform=pc" in my payload.elf.
USB modules weren't enabled in 1.98 on coreboot.
Surprising, they can be insmoded and run in the grub-shell , but
unfortunately, I got those logs, they can not
work.
it's already surprising they didn't crash GRUB altogether.



_______________________________________________
Grub-devel mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/grub-devel

_______________________________________________
Grub-devel mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/grub-devel



_______________________________________________
Grub-devel mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/grub-devel


reply via email to

[Prev in Thread] Current Thread [Next in Thread]