BTX problems

Jung-uk Kim jkim at FreeBSD.org
Tue Aug 23 16:53:01 GMT 2005


On Monday 22 August 2005 11:32 pm, Kenneth D. Merry wrote:
> On Mon, Aug 22, 2005 at 16:22:41 -0400, Jung-uk Kim wrote:
> > On Monday 22 August 2005 03:18 pm, John Baldwin wrote:
> > > On Monday 22 August 2005 01:19 pm, Jung-uk Kim wrote:
> > > > On Monday 22 August 2005 12:33 pm, Kenneth D. Merry wrote:
> > > > > On Mon, Aug 22, 2005 at 12:16:51 -0400, Jung-uk Kim wrote:
> > > > > > On Monday 22 August 2005 11:57 am, Kenneth D. Merry wrote:
> > > > > > > On Mon, Aug 22, 2005 at 11:37:25 -0400, Jung-uk Kim wrote:
> > > > > > > > On Saturday 20 August 2005 01:02 am, Kenneth D. Merry
> >
> > wrote:
> > > > > > > > > On Tue, Aug 16, 2005 at 13:39:48 -0400, John
> > > > > > > > > Baldwin
> >
> > wrote:
> > > > > > > > > > There haven't been a whole lot of changes.  My
> > > > > > > > > > guess would be the recently added smbios support.
> > > > > > > > > >  You can probably just comment out the call to
> > > > > > > > > > smbios_detect() in sys/boot/i386/loader/main.c as
> > > > > > > > > > a simple test for that. It could also possibly be
> > > > > > > > > > the multiple console support in which case it
> > > > > > > > > > would be easiest to just step your sys/boot tree
> > > > > > > > > > back using CVS.  The good news is that sys/boot
> > > > > > > > > > is largely self-contained so you can step it back
> > > > > > > > > > while keeping the rest of the tree up to date for
> > > > > > > > > > testing purposes at least.
> > > > > > > > >
> > > > > > > > > Thanks for the tips!
> > > > > > > > >
> > > > > > > > > Commenting out smbios_detect() did the trick.  The
> > > > > > > > > loader works fine after that.
> > > > > > > > >
> > > > > > > > > So now what?  Is there a way to fix it so it won't
> > > > > > > > > crash on my system?
> > > > > > > >
> > > > > > > > So, I guess I broke it, then.  Can you install
> > > > > > > > ports/sysutils/dmidecode and send me dmidecode
> > > > > > > > output?
> > > > > > >
> > > > > > > Sure, here it is.
> > > > > >
> > > > > > Okay, it looks good so far.  Can you do:
> > > > > >
> > > > > > dd if=/dev/mem of=dmi.dat bs=1 count=1534 skip=984640
> > > > > > dd if=/dev/mem of=smbios.dat bs=1 count=65536 skip=983040
> > > > > >
> > > > > > and send me dmi.dat and smbios.dat, please?
> > > > >
> > > > > Here they are.
> > > >
> > > > It's very strange.  It seems SM entry and DMI structures are
> > > > all sane. I don't understand why it happens. :-( I just wrote
> > > > a qucik-and-dirty userland wrapper for smbios.c, which is
> > > > attached.
> > > >
> > > > SMBIOS entry: 0x000f00a0
> > > > DMI structures: length = 1534, paddr = 0x000f0640, count = 49
> > > > smbios.bios.vendor="American Megatrends Inc."
> > > > smbios.bios.version="0700xx "
> > > > smbios.bios.reldate="11/14/2001"
> > > > smbios.system.maker="Supermicro"
> > > > smbios.system.product="P3TDE6"
> > > > smbios.system.version="1234567890"
> > > > smbios.planar.maker="Supermicro"
> > > > smbios.planar.product="P3TDE6"
> > > > smbios.planar.version="1234567890"
> > > > smbios.chassis.maker="Supermicro"
> > > > smbios.chassis.version="P3TDE6"
> > > >
> > > > Is it possible that PTOV() is not working somehow???  I need
> > > > help here.
> > >
> > > Perhaps give ken@ a patch with some printf's added to figure
> > > out how far it gets into smbios_detect() before it dies?
> >
> > Thanks for the suggestion.
> >
> > ken,
> >
> > can you try the attached diff and tell me how far it goes?
>
> Sure, here's what I get for output.
>
> I tried it once with the VGA console, and got the a loader/BTX
> panic message.
>
> Since there was a lot of output, I used the -h option for boot2 to
> run it through the serial console.  It looks like I got all the
> output except the panic message.

Sorry for the trouble but I don't see anything wrong with
smbios.c. :-(  It was working fine as planned and main.c was printing
loader banner, which is the next thing main() does.

FreeBSD/i386 bootstrap loader, Revision 1.1
(ken at gondolin.kdm.org, Fri Aug 19 22:51:48 MDT 2005)

So the panic must have happened after smbios_detect().  I can only
theorize somehow setenv() is corrupting memory for unknown reason.
Can you do the following and run the test again?

Index: smbios.c
===================================================================
RCS file: /home/ncvs/src/sys/boot/i386/libi386/smbios.c,v
retrieving revision 1.2
diff -u -r1.2 smbios.c
--- smbios.c    27 Jul 2005 19:11:10 -0000      1.2
+++ smbios.c    23 Aug 2005 16:50:43 -0000
@@ -134,7 +134,9 @@
 
        for (cp = (char *)(dmi + dmi[1]), i = 0; i < dmi[offset] - 1; i++)
                cp += strlen(cp) + 1;
+#if 0
        setenv(str, cp, 1);
+#endif
 }
 
 static u_int8_t

Thanks,

Jung-uk Kim


More information about the freebsd-current mailing list