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
No comments:
Post a Comment