2001-11-20 06:28:32

by Zwane Mwaikambo

[permalink] [raw]
Subject: MP FP struct in the EBDA


I just noticed the following comment in mpparse.c:find_intel_smp

"If it is an SMP machine we should know now, unless the
configuration is in an EISA/MCA bus machine with an extended bios data
area."

I'd presume this statement isn't true today, e.g. one of the IBM Netfinity
boxes here (3500M20) has the MP tables in the EBDA. Also how come we
search the whole EBDA (4k)? Whilst the MP 1.4 spec sheet says search the
first kilobyte only.

<--snip-->
address = *(unsigned short *)phys_to_virt(0x40E);
address <<= 4;
smp_scan_config(address, 0x1000);
<--snip-->

The FreeBSD (4.3-REL) MP probe code also only searches the first K
(mp_machdep.c:mp_probe)

if ((segment = (u_long) * (u_short *) (KERNBASE + 0x40e)) != 0) {
/* search first 1K of EBDA */
target = (u_int32_t) (segment << 4);
if ((x = search_for_sig(target, 1024 / 4)) >= 0)
goto found;

Just Curious,
Zwane Mwaikambo



2001-11-20 09:04:22

by Alan

[permalink] [raw]
Subject: Re: MP FP struct in the EBDA

> "If it is an SMP machine we should know now, unless the
> configuration is in an EISA/MCA bus machine with an extended bios data
> area."

Yes that was fixed.

> I'd presume this statement isn't true today, e.g. one of the IBM Netfinity
> boxes here (3500M20) has the MP tables in the EBDA. Also how come we
> search the whole EBDA (4k)? Whilst the MP 1.4 spec sheet says search the
> first kilobyte only.

We used to search the last 4K of RAM in the low 640Kb, it looks like that
was never changed when we began using the EBDA pointer properly.

2001-11-20 09:14:54

by Zwane Mwaikambo

[permalink] [raw]
Subject: Re: MP FP struct in the EBDA

On Tue, 20 Nov 2001, Alan Cox wrote:

> > I'd presume this statement isn't true today, e.g. one of the IBM Netfinity
> > boxes here (3500M20) has the MP tables in the EBDA. Also how come we
> > search the whole EBDA (4k)? Whilst the MP 1.4 spec sheet says search the
> > first kilobyte only.
>
> We used to search the last 4K of RAM in the low 640Kb, it looks like that
> was never changed when we began using the EBDA pointer properly.

I'm not sure anyone has a box with the MP tables that high in the EBDA,
but i can vouch for my 3500M20 having it in the 1st k. So should this be
changed to 0x400 to adhere to the specifications?

Regards,
Zwane Mwaikambo