Hi Daniel,
On 03/30/2018 02:20 AM, Daniel Dickman wrote:
Hi Frank —
I got this nice old "workstation" from the mid 90ies with dual P54C
processors and i430NX chipset and want to operate it in MP mode with
OpenBSD. Unfortunately this doesn't work as expected currently.
Are you able to describe "doesn't work as expected" a bit more? Does it hang
after the dmesg? do you get to login? Something else?
Sorry, right, I actually missed the point.
The machine works with OpenBSD, but just not in MP mode, only one CPU is
activated/found:
```
OpenBSD/i386 (pcd-5t.domain.tld) (tty00)
login: root
Password:
Last login: Wed Mar 28 11:10:35 on tty00
OpenBSD 6.3 (GENERIC.MP) #491: Sat Mar 24 14:38:11 MDT 2018
Welcome to OpenBSD: The proactively secure Unix-like operating system.
[...]
pcd-5t# sysctl hw
hw.machine=i386
hw.model=Intel Pentium (P54C) ("GenuineIntel" 586-class)
hw.ncpu=1
hw.byteorder=1234
hw.pagesize=4096
hw.disknames=fd0:
hw.diskcount=1
hw.cpuspeed=139
hw.physmem=167264256
hw.usermem=167251968
hw.ncpufound=1
hw.allowpowerdown=1
```
I've
already tried with 6.1, 6.2 and 6.3-current-1521924436. Find attached
the full dmesg output for 6.3-[...] below, but I suspect that the
following message is the most relevant one:
```
[...]
bios0: MP default configuration 6 not supported
[...]
```
I actually don't know the meaning of it, can someone perhaps shed some
light on it?
It means you got to this bit of code (see sys/arch/i386/i386/mpbios.c):
if (mp_fps->pap == 0) {
if (mp_fps->mpfb1 == 0)
printf("%s: MP fps invalid: "
"no default config and no configuration table\n",
self->dv_xname);
else
printf("%s: MP default configuration %d not "
"supported\n", self->dv_xname, mp_fps->mpfb1);
goto err;
}
Yes, I also found this part later on with a string search, but couldn't
make much out of it due to missing knowledge you did provide below -
thanks for that. :-)
mp_fps is the "MP floating point structure" (see 4.1 in the MP spec). Now, we
know the pap (Physical Address Pointer) is zero which means the MP config table doesn't
exist on your system. So when there's no config table, the spec wants to use a default
setup. (see section 5 of the spec).
To know which default config to use we’d need to use the MP information byte #1
according to the spec. Your dmesg shows the value is 6 and the spec says a
value of 6 refers to 2 cpus with EISA+PCI bus and integrated APIC).
It may be the case that more work is needed to add support for this setup.
Haven’t looked much further than that so far...
The message mentioning that "MP default configuration 6 not supported"
sounded like specifically default config 6 isn't supported in my case.
But it actually looks like this affects all systems that don't have an
MP config table, i.e. no MP operation if there's no MP config table but
just a default config.
I'll try to find out how NetBSD handles default configurations. Maybe
this can be applied to OpenBSD, too.
Cheers and thanks for the explanations
Frank