NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-i386/47566: kernel ignores root device parameter specified in boot loader
The following reply was made to PR port-i386/47566; it has been noted by GNATS.
From: David Young <dyoung%pobox.com@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: port-i386-maintainer%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
netbsd-bugs%netbsd.org@localhost
Subject: Re: port-i386/47566: kernel ignores root device parameter specified
in boot loader
Date: Thu, 14 Feb 2013 22:55:49 -0600
--HzaOE8X7KzPzAQEl
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
On Thu, Feb 14, 2013 at 12:30:01PM +0000, Takahiro HAYASHI wrote:
> >Number: 47566
> >Category: port-i386
> >Synopsis: kernel ignores root device parameter specified in boot
> >loader
> >Confidential: no
> >Severity: serious
> >Priority: medium
> >Responsible: port-i386-maintainer
> >State: open
> >Class: sw-bug
> >Submitter-Id: net
> >Arrival-Date: Thu Feb 14 12:30:00 +0000 2013
> >Originator: Takahiro HAYASHI
> >Release: NetBSD 6.99.16 (201301271040Z from nyftp)
> >Organization:
> >Environment:
> System: NetBSD 6.99.16 NetBSD 6.99.16 (MONOLITHIC) #0: Sun Jan 27 17:20:26
> UTC 2013
> builds%b6.netbsd.org@localhost:/home/builds/ab/HEAD/i386/201301271040Z-obj/home/builds/ab/HEAD/src/sys/arch/i386/compile/MONOLITHIC
> amd64
> Architecture: x86_64
> Machine: amd64
> >Description:
> Recent kernel ignores root device parameter specified in
> boot loader and always boots from hdXa.
>
> I installed NetBSD/amd64 on wd0a and NetBSD/i386 on wd0f.
> (This pc has one disk, so hd0 is wd0.)
> They are in same MBR partition. I don't use any dkwedges.
> /boot.cfg on wd0a has following lines:
Does this patch help?
change 1:
Use the sizeof() the right thing to compute the length of the
btinfo_userconfcommands. This prevents an anonymous (4-bytes long,
only long enough for the 'len' member) bootinfo_common from being sent
to the kernel.
change 2:
Don't track in add_biosdisk_bootinfo() whether the BTINFO_BOOTWEDGE and
BTINFO_BOOTDISK bootinfo has been BI_ADD()'d, because the bootloader
might need to re-BI_ADD() if the bootloader have to try to boot a few
kernels (netbsd, ..., netbsd.gz) before finding one.
A better place to protect against BI_ADD()'ing the same BTINFO_* twice
is in bi_add().
Dave
--
David Young
dyoung%pobox.com@localhost Urbana, IL (217) 721-9981
--HzaOE8X7KzPzAQEl
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="i386-stand.patch"
--- sys/arch/i386/stand/lib/biosdisk.c 2012-09-20 01:03:41.000000000 0000
+++ sys/arch/i386/stand/lib/biosdisk.c 2012-10-02 23:55:45.000000000 0000
@@ -694,22 +694,8 @@
static void
add_biosdisk_bootinfo(void)
{
- static bool done;
-
- if (bootinfo == NULL) {
- done = false;
- return;
- }
-
- if (done)
- return;
-
BI_ADD(&bi_disk, BTINFO_BOOTDISK, sizeof(bi_disk));
BI_ADD(&bi_wedge, BTINFO_BOOTWEDGE, sizeof(bi_wedge));
-
- done = true;
-
- return;
}
#endif
--- sys/arch/i386/stand/lib/exec.c 2012-09-20 01:03:41.000000000 0000
+++ sys/arch/i386/stand/lib/exec.c 2012-10-02 23:57:41.000000000 0000
@@ -627,7 +627,7 @@
count = 0;
for (uc = userconf_commands; uc != NULL; uc = uc->uc_next)
count++;
- len = sizeof(btinfo_userconfcommands) +
+ len = sizeof(*btinfo_userconfcommands) +
count * sizeof(struct bi_userconfcommand);
/* Allocate the userconf commands list */
--HzaOE8X7KzPzAQEl--
Home |
Main Index |
Thread Index |
Old Index