On Tue, Feb 20, 2018 at 08:58:47AM +0100, Otto Moerbeek wrote:
> On Tue, Feb 20, 2018 at 08:52:20AM +0100, Mark Kettenis wrote:
>
> > > Date: Mon, 19 Feb 2018 13:49:48 +0100 (CET)
> > > From: Mark Kettenis <[email protected]>
> > >
> > > The diff below attempts to make the arm64 pmap "mpsafe" and enables MP
> > > support. This diff survived a full build on my Firefly-RK3399 board.
> > > It also seems to work on the Overdrive 1000. It might even work on
> > > the Raspberry Pi 3. I'd appreciate it if people could play with this
> > > on the Raspberry Pi and other arm64 hardware they have.
> > >
> > > I tried to follow a strategy for making the pmap "mpsafe" that more
> > > closely resembles what we did for our other architectures, although I
> > > looked at Dale Rahn's diff as well. It seems I fixed at least some
> > > bugs in the process. But I'm sure there are bugs remaining. I may
> > > even have introduced new ones. So do expect this to crash and burn,
> > > or at least lock up.
> > >
> > > I'm also interested in people testing the normal GENERIC kernel with
> > > this diff, especially building ports. There are some changes in there
> > > that could affect non-MP as well.
> >
> > Here is a slightly better diff that removes a potential lock ordering
> > problem, removes a redundant splvm and moves some code around to avoid
> > a level of indentation. Gaining confidence, so I'm looking for ok's
> > now.
>
> I have been running you diff on my rpi (together with jsg firmware update).
>
> My rpi has hung twice now while doing a make -j4 in the clang part of
> the tree.
>
> The last top screen shows it using swap (around 400M) and has three
> c++ processes each with resident size around 200M.
>
> I'll try this diff now.
Not much change with this diff compared to the first. The system
functions more or less, but I'm seeing:
- No processes being scheduled on CPU 0
- A hang on reboot
- slaacd is not table to configure the ipv6 correctly, the address
remains "tentative" and packets do not flow.
Switching to single user mode, init complains it cannot kill all
processes. It turns out the main slaacd process hangs and cannot be
killed (not even with kill -9).
All this does not happen running a non-MP kernel.
-Otto