Friday, September 01, 2017

Re: 6.1 fails to boot on a 486

On Thu, Aug 31, 2017 at 11:57:40PM -0700, Mike Larkin wrote:
> On Fri, Sep 01, 2017 at 01:04:40AM -0500, Andrew Daugherity wrote:
> > I recently dug out of the closet my old IBM PS/2E, which had served as
> > my firewall box from 2000ish-06, and was in fact the very first
> > machine I ever installed OpenBSD on, to see if it still worked
> > properly. It did (after changing the CMOS battery), but booted into
> > OpenBSD 4.1... yeah, just a *bit* out of date there. The machine may
> > not be of great use nowadays (I'd retired it when it couldn't keep up
> > with my internet connection), but even as a retro-computing
> > playground, running a 10-year-old/20-releases-ago version of OpenBSD
> > is of no benefit. Let's rectify that!
> >
> > ====
> > >> OpenBSD/i386 BOOT 3.31
> > boot> hd0a:/bsd61.rd
> > cannot open hd0a:/etc/random.seed: No such file or directory
> > booting hd0a:/bsd61.rd: 3208120+1332224+3342348+0+446464
> > [72+288736+277711]=0x87e694
> > entry point at 0x2000d4
> >
> > Copyright (c) 1982, 1986, 1989, 1991, 1993
> > The Regents of the University of California. All rights reserved.
> > Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org
> >
> > OpenBSD 6.1 (RAMDISK_CD) #289: Sat Apr 1 13:58:25 MDT 2017
> > deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/RAMDISK_CD
> > fatal privileged instruction fault (0) in supervisor mode
> > trap type 0 code 0 eip d03b1f7c cs d09f0008 eflags 10046 cr2 0 cpl 0
> > panic: trap type 0, code=0, pc=d03b1f7c
> >
> > The operating system has halted.
> > Please press any key to reboot.
> > ====
> >
> > Well, that's not good -- I didn't expect 6.1 to run particularly well
> > on this, but I figured it would at least boot... how about 6.0?
> >
> >
> > ====
> > booting hd0a:/bsd60.rd: 3211188+1318224+2061312+0+442368
> > [72+298576+282894]=0x744144
> > entry point at 0x2000d4
> >
> > Copyright (c) 1982, 1986, 1989, 1991, 1993
> > The Regents of the University of California. All rights reserved.
> > Copyright (c) 1995-2016 OpenBSD. All rights reserved. http://www.OpenBSD.org
> >
> > OpenBSD 6.0 (RAMDISK_CD) #1864: Tue Jul 26 12:57:09 MDT 2016
> > deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/RAMDISK_CD
> > cpu0: Intel 486DX (486-class)
> > real mem = 16183296 (15MB)
> > avail mem = 8122368 (7MB)
> > mainbus0 at root
> > bios0 at mainbus0: date 03/31/93
> > pcibios at bios0 function 0x1a not configured
> > bios0: ROM list: 0xc8000/0x1000 0xc9000/0x1000 0xca000/0x2000
> > cpu0 at mainbus0: (uniprocessor)
> > isa0 at mainbus0
> > isadma0 at isa0
> > fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
> > fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
> > com0 at isa0 port 0x3f8/8 irq 4: ns16450, no fifo
> > com0: console
> > pckbc0 at isa0 port 0x60/5 irq 1 irq 12
> > pckbd0 at pckbc0 (kbd slot)
> > wskbd0 at pckbd0: console keyboard
> > vga0 at isa0 port 0x3b0/48 iomem 0xa0000/131072
> > wsdisplay0 at vga0 mux 1: console (80x25, vt100 emulation), using wskbd0
> > wdc0 at isa0 port 0x1f0/8 irq 14
> > wd0 at wdc0 channel 0 drive 0: <IBM-DARA-206000>
> > wd0: 16-sector PIO, LBA, 5729MB, 11733120 sectors
> > wd0(wdc0:0:0): using BIOS timings
> > npx0 at isa0 port 0xf0/16 irq 13
> > pcic0 at isa0 port 0x3e0/2 iomem 0xd0000/16384
> > pcic0 controller 0: <Intel 82365SL rev 1> has sockets A and B
> > pcic0 controller 1: <Intel 82365SL rev 1> has sockets A and B
> > pcmcia0 at pcic0 controller 0 socket 0
> > pcmcia1 at pcic0 controller 0 socket 1
> > pcmcia2 at pcic0 controller 1 socket 0
> > ep1 at pcmcia2 function 0 "3Com, 3C574-TX Fast EtherLink PC Card, A"
> > port 0x340/32, irq 3: address 00:10:4b:5f:20:c0
> > tqphy0 at ep1 phy 0: 78Q2120 10/100 PHY, rev. 3
> > pcmcia3 at pcic0 controller 1 socket 1
> > ep2 at pcmcia3 function 0 "3Com, 3C574-TX Fast EtherLink PC Card, A"
> > port 0x300/32, irq 9: address 00:60:08:93:80:48
> > tqphy1 at ep2 phy 0: 78Q2120 10/100 PHY, rev. 3
> > pcic0: irq 5, polling enabled
> > softraid0 at root
> > scsibus0 at softraid0: 256 targets
> > root on rd0a swap on rd0b dump on rd0b
> > erase ^?, werase ^W, kill ^U, intr ^C, status ^T
> >
> > Welcome to the OpenBSD/i386 6.0 installation program.
> > (I)nstall, (U)pgrade, (A)utoinstall or (S)hell?
> > ====
> >
> > Seems fairly normal. Did I miss something about 6.1 dropping 486
> > support? [/me checks i386.html... still says 486 or better!]
> >
> > Turns out that GENERIC can give us a little more useful information
> > than RAMDISK_CD, as it drops into ddb:
> >
> >
> > ====
> > boot> hd0a:/bsd.61
> > cannot open hd0a:/etc/random.seed: No such file or directory
> > booting hd0a:/bsd.61: 7678420+2057220+174556+0+1097728
> > [72+501520+501951]=0xb761b4
> > entry point at 0x2000d4
> >
> > [ using 1003956 bytes of bsd ELF symbol table ]
> > Copyright (c) 1982, 1986, 1989, 1991, 1993
> > The Regents of the University of California. All rights reserved.
> > Copyright (c) 1995-2017 OpenBSD. All rights reserved. https://www.OpenBSD.org
> >
> > OpenBSD 6.1 (GENERIC) #291: Sat Apr 1 13:49:08 MDT 2017
> > deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
> > kernel: privileged instruction fault trap, code=0
> > Stopped at cpuid+0x12: cpuid
> > ddb> trace
> > cpuid(80000000,d0d78ef0,d0d78ed8,0,7d) at cpuid+0x12
> > identifycpu(d0c7d8a0,d09fbb83,10,0,ffffffff) at identifycpu+0x80d
> > cpu_startup(d09cefed,d09d1680,16c,8,0) at cpu_startup+0xb9
> > main(d02004c6,d02004ce,0,0,0) at main+0x6a
> > ddb> ps
> > PID TID PPID UID S FLAGS WAIT COMMAND
> > ddb>
> > ====
> >
> > Looks like it's trying to run the CPUID instruction, which this
> > processor probably doesn't support. Maybe this was an accidental
> > breakage, rather than intentionally dropping 486es? Time to examine
> > the CVS logs, I guess. (A -current snapshot also fails in the same
> > manner, so something happened between 6.0 & 6.1.)
> >
>
> Looks like I broke this about a year ago:
>
> 1.592 (mlarkin 14-Oct-16):
> 1.592 (mlarkin 14-Oct-16): cpuid(0x80000000, regs);
> 1.592 (mlarkin 14-Oct-16): if (regs[0] >= 0x80000006)
> 1.592 (mlarkin 14-Oct-16): cpuid(0x80000006, ci->ci_extcacheinfo);
>
> I did test this on 486, but apparently qemu's emulated 486 isn't really a
> proper 486. I'll see what I can do to solve it for you.
>
> Thanks for reporting it.
>
> -ml
>

I think I have a fix for this but I just want to set expectations
properly. I don't think it's going to work even with the fix as I don't believe
we can boot in 16MB anymore.

-ml

No comments:

Post a Comment