From: Mark H Weaver <mhw@netris.org>
To: Andrei Borzenkov <arvidjaar@gmail.com>
Cc: bug-grub@gnu.org, The development of GNU GRUB <grub-devel@gnu.org>
Subject: Re: yeeloong: cs5536 (Geode companion) not working in grub master
Date: Wed, 19 Aug 2015 04:44:24 -0400 [thread overview]
Message-ID: <87bne3u0pj.fsf@netris.org> (raw)
In-Reply-To: <55D221B4.9080906@gmail.com> (Andrei Borzenkov's message of "Mon, 17 Aug 2015 21:02:28 +0300")
Hi Andrei, thank you for the quick response.
Andrei Borzenkov <arvidjaar@gmail.com> 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
next prev parent reply other threads:[~2015-08-19 8:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87io8g1p8u.fsf@netris.org>
2015-08-17 18:02 ` yeeloong: cs5536 (Geode companion) not working in grub master Andrei Borzenkov
2015-08-19 8:44 ` Mark H Weaver [this message]
[not found] ` <CAA91j0XWGssTGgUrcHuEY1mgs9EDV+vpqhDpjzjphSW8yU_pOA@mail.gmail.com>
2015-08-19 16:18 ` Mark H Weaver
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=87bne3u0pj.fsf@netris.org \
--to=mhw@netris.org \
--cc=arvidjaar@gmail.com \
--cc=bug-grub@gnu.org \
--cc=grub-devel@gnu.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.