I forgot to resend all

---------- Forwarded message ---------
De: Almudena Garcia <liberamenso10...@gmail.com>
Date: mar., 2 abr. 2019 a las 14:31
Subject: Re: Comments about SMP
To: <dam...@zamaudio.com>


Hi all:

I've got to implements the cpu enumeration reading ACPI tables, and to boot
the system with *mach_ncpus=2* and a only cpu.

<https://www.youtube.com/watch?v=gWXy5X085UI>
https://github.com/AlmuHS/GNUMach_SMP

I've tested It in two usecase: cpus enumeration without enable processors,
and without cpu enumeration.

The first usecase is this:
https://www.youtube.com/watch?v=gWXy5X085UI

And the second is this:
https://www.youtube.com/watch?v=GXSxdchUcEM

In both usecase, the system boots correctly (although a bit slow in the
first usecase). So, in a future implementation, could be possible to start
this sequence from a Hurd server.

Now I'm working in raise startup IPI to enable the processors, and add this
to *machine_slot *array.
Currently, the IPI feels to raise correctly, but the assembly routine (to
skip cpus to protected mode) is not executed.
I'm working to solve this problem.

The files in what I'm working are these:
https://github.com/AlmuHS/GNUMach_SMP/blob/wip/i386/i386/mp_desc.c
https://github.com/AlmuHS/GNUMach_SMP/blob/wip/i386/i386/cpuboot.S

Thanks by your interest in this project.

El lun., 11 mar. 2019 a las 1:53, Almudena Garcia (<
liberamenso10...@gmail.com>) escribió:

> >>  It appears mach_ncpus is hardcoded at compile time, maybe you just need
> > to detect this value via ACPI (?)
>
> Yes, this is the idea. I set mach_ncpus to maximum value to avoid broken
> the cpu structure arrays.
>
> But It's not the only that I need to enable cpus. I also need to find
> their APIC structures (Local APIC and IOAPIC), to send IPI and communicate
> the cpus.
>
> El Lunes 11 de marzo de 2019, Damien Zammit escribió:
> > Hi Almudena,
> >
> > > El dom., 10 mar. 2019 a las 18:35, Samuel Thibault
> > > (<samuel.thiba...@gnu.org <mailto:samuel.thiba...@gnu.org>>) escribió:
> > >     Adam Van Ymeren, le dim. 10 mars 2019 13:08:23 -0400, a ecrit:
> > >     > I don't think that's necessary.  The process doesn't have to
> > >     initiated from gnumach.  Hurd could have an SMP server that is
> > >     started at boot, parses acpi tables and calls in to Mach to
> > >     initialize the additional cores and start scheduling on them.
> > >
> > >     That's the idea.
> >
> > I'm not sure if it is required to send IPI etc, doesn't the BIOS set up
> > the extra cores?  I've seen code in coreboot that sets up the extra
> > cores.  I thought you only need the ACPI tables to know how many cores
> > to use and pass this value somehow to Mach (?)
> >
> > See
> >
> https://github.com/AlmuHS/GNUMach_SMP/blob/5bceb7fc20176b75ed3284ca3fc9856dfe2cd158/configfrag.ac#L33
> >
> > It appears mach_ncpus is hardcoded at compile time, maybe you just need
> > to detect this value via ACPI (?) Maybe someone else can comment on how
> > "broken" is multiprocessor support as specified in that inline comment.
> >
> > Damien
> >
>
> --
> Enviado desde mi Sailfish OS

Reply via email to