bug-grub
[Top][All Lists]
Advanced

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

Re: yeeloong: cs5536 (Geode companion) not working in grub master


From: Mark H Weaver
Subject: Re: yeeloong: cs5536 (Geode companion) not working in grub master
Date: Wed, 19 Aug 2015 04:44:24 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Hi Andrei, thank you for the quick response.

Andrei Borzenkov <address@hidden> writes:

> 15.08.2015 19:38, Mark H Weaver пишет:
>> I'm attempting to get grub working on the Lemote Yeeloong 8101B
>> (Loongson 2F) as a second-stage bootloader from PMON.
>>
>> I have grub-2.02-beta2-499-g4fe8e6d mostly working, with one exception:
>> none of the devices on the cs5536 (Geode companion) are accessible,
>> which unfortunately includes the IDE interface for the internal disk.
>>
>
> As far as I understand code, if GRUB wants to have cs5536 and does not
> find it it stops. If you enter GRUB it means it skipped cs5536
> initialization. According to code, it can happen only if
> grub_arch_memsize != 0. I do not see where GRUB itself sets it before
> this check. So my only guess that PMON (whatever it is) fills in this
> field in GRUB header. We could add debug print to verify this.

Indeed, your guess is correct.  I applied the following patch and the
output was: "orig_grub_arch_memsize == 100".

--8<---------------cut here---------------start------------->8---
diff --git a/grub-core/kern/mips/loongson/init.c 
b/grub-core/kern/mips/loongson/init.c
index 7b96531..15a6dfd 100644
--- a/grub-core/kern/mips/loongson/init.c
+++ b/grub-core/kern/mips/loongson/init.c
@@ -121,6 +121,7 @@ grub_machine_init (void)
 {
   grub_addr_t modend;
   grub_uint32_t prid;
+  grub_uint32_t orig_grub_arch_memsize;
 
   asm volatile ("mfc0 %0, " GRUB_CPU_LOONGSON_COP0_PRID : "=r" (prid));
 
@@ -154,6 +155,7 @@ grub_machine_init (void)
 
   grub_install_get_time_ms (grub_rtc_get_time_ms);
 
+  orig_grub_arch_memsize = grub_arch_memsize;
   if (grub_arch_memsize == 0)
     {
       grub_port_t smbbase;
@@ -223,6 +225,10 @@ grub_machine_init (void)
   grub_serial_init ();
 
   grub_boot_init ();
+
+  grub_printf ("orig_grub_arch_memsize == %lx\n\n",
+               (unsigned long) orig_grub_arch_memsize);
+  grub_getkey ();
 }
 
 void
--8<---------------cut here---------------end--------------->8---

I then tried changing "if (grub_arch_memsize == 0)" to "if (1)", but
that didn't help.  The 'lspci' output didn't change, and I was still
unable to access the internal disk.  The only change I noticed is that
tab completion within grub partition specifiers now hangs grub for
several seconds before failing to generate any completions, whereas
before there was no perceptible delay.

>> This grub is able to access filesystems from a thumb drive plugged into
>> one of the USB ports: the one next to the ethernet jack, which is the
>> one that is not connected to the cs5536.  Grub is unable to access the
>> other two USB ports, which are connected to the cs5536.
>>
>> I'm judging what disks are accessible based on tab completion, trying
>> various partition names like (hd0,msdos1) (ata0,msdos1), and also using
>> the 'search' command.
>>
>> lspci from grub prints:
>>
>>    00:02.0 10ec:8139 [0200] Ethernet Controller
>>    00:03.0 126f:0712 [0300] VGA Controller
>>    00:04.0 1033:0035 [0c03] USB Controller [PI 10]
>>    00:04.1 1033:00e0 [0c03] USB Controller [PI 20]
>>    00:09.0 1022:208f [ff00]
>>
>
> This is correct; it is the PCI ID that GRUB expects.

Okay, but should 'lspci' with GRUB also show entries for the IDE
interface and USB controllers that are part of the cs5536?

>> whereas "lspci -nn" from my booted system reports:
>>
>>    00:07.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. 
>> RTL-8139/8139C/8139C+ [10ec:8139] (rev 10)
>>    00:08.0 VGA compatible controller [0300]: Silicon Motion, Inc. SM712 
>> LynxEM+ [126f:0712] (rev b0)
>>    00:09.0 USB controller [0c03]: NEC Corporation OHCI USB Controller 
>> [1033:0035] (rev 44)
>>    00:09.1 USB controller [0c03]: NEC Corporation uPD72010x USB 2.0 
>> Controller [1033:00e0] (rev 05)
>>    00:0e.0 ISA bridge [0601]: AMD [Advanced Micro Devices, Inc.] CS5536 
>> [Geode companion] ISA [1022:2090] (rev 03)
>>    00:0e.2 IDE interface [0101]: AMD [Advanced Micro Devices, Inc.] CS5536 
>> [Geode companion] IDE [1022:209a] (rev 01)
>>    00:0e.3 Multimedia audio controller [0401]: AMD [Advanced Micro Devices, 
>> Inc.] CS5536 [Geode companion] Audio [1022:2093] (rev 01)
>>    00:0e.4 USB controller [0c03]: AMD [Advanced Micro Devices, Inc.] CS5536 
>> [Geode companion] OHC [1022:2094] (rev 02)
>>    00:0e.5 USB controller [0c03]: AMD [Advanced Micro Devices, Inc.] CS5536 
>> [Geode companion] EHC [1022:2095] (rev 02)

    Thanks!
      Mark



reply via email to

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