Thursday, August 31, 2017

Re: 6.1 fails to boot on a 486

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

No comments:

Post a Comment