On Tue, Feb 20, 2018 at 07:52:49PM +0100, Otto Moerbeek wrote:

> 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

A bit more info:

When displaying system processes with top, this is what I see:

79636 root     -22    0    0K  121M onproc/0  -         0:05 99.71% idle0
  519 otto      28    0 1040K 1848K onproc/3  -         0:01  0.05% top
58718 root      -5    0    0K  121M sleep/3   -       218:42  0.00% idle1
58489 root      -5    0    0K  121M onproc/1  -       218:37  0.00% idle3
41386 root      -5    0    0K  121M onproc/2  -       218:28  0.00% idle2

Compared to and amd64 system, it shows idle0 on cpu0 taking
cpu time, but not actually accumulating it?

amd64 system:

49951 root     -22    0    0K   10M onproc/0  -       406.8H  0.00% idle0
51048 root     -22    0    0K   10M onproc/3  -       406.4H  0.00% idle3
60166 root     -22    0    0K   10M idle      -       405.6H  0.00% idle1
 9554 root     -22    0    0K   10M onproc/2  -       405.2H  0.00% idle2

        -Otto

Reply via email to