Hi all:

I'm researching about SMP support in Mach microkernel, reading code and
reviewing old messages in maillist.

Mach 4 code can be downloaded from here:
ftp://ftp.lip6.fr/pub/mach/mach4/mach/

And, exploring old code, I'm find some interesting things:

At first time, I found that Mach 4 also had a implementation of
cpu_number() (in kernel/imps/cpu_number.h), with this:

static inline int
cpu_number()
{
    return apic_local_unit.unit_id.r >> 24;
}

Later, also in Mach 4, I found an old implementation of APIC support. This
code also existed in gnumach, but was removed in 2009/

http://git.savannah.gnu.org/cgit/hurd/gnumach.git/commit/i386/imps/apic.h?id=0266d331d780ff0e595eda337a3501ffbfea9330

I see that this contains interesting structures to read ACPI registers. Why
this code was removed? May could be interesting recover It fot SMP support.


Added to this, I've found this another commit from 2007.
http://git.savannah.gnu.org/cgit/hurd/gnumach.git/commit/i386/i386/mp_desc.c?id=f9fd27989cb6402fbdf624c350e9908903902745

In this commit, was added some functions related with SMP support, for cpu
booting. This functions are pretty similar to imps.c functions from Mach 4.

But, in cpu_start() function, there are a call to intel_startCPU(). I was
searching this function in Mach 4 and gnumach code. but I didn't find It.

What must to do this function? Some months ago, I found a similar function
in XNU source code, but It's not trivial. Can you explain me more about
this?

If you could to reply my questios, I will be grateful

Also, If someone can explain me about SMP support status in Mach 4, and the
diferences with gnumach, It's could be very useful.

Thanks.

Reply via email to