Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Jul 2016 17:08:54 -0700
From:      Nathan Whitehorn <nwhitehorn@freebsd.org>
To:        outro pessoa <outro.pessoa@gmail.com>
Cc:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   Re: Review request: sparse CPU ID maps
Message-ID:  <5345fb94-91b8-5019-037e-d4825a694cfd@freebsd.org>
In-Reply-To: <CAD9=5Xw-MmVVSSo6nRvSRvGaLbd1Z1YRyVKyF9JfmucNKMGBZg@mail.gmail.com>
References:  <57761101.3030101@freebsd.org> <CAD9=5Xw-MmVVSSo6nRvSRvGaLbd1Z1YRyVKyF9JfmucNKMGBZg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
A reasonable first pass at checking for this kind of bug is doing grep 
-lR '< mp_ncpus'. Running that on sys/arm and sys/arm64 shows the 
following files:
arm/mv/armadaxp/armadaxp_mp.c
arm/include/counter.h
arm/broadcom/bcm2835/bcm2836.c
arm/broadcom/bcm2835/bcm2836_mp.c
arm/freescale/imx/imx6_mp.c
arm/allwinner/aw_mp.c
arm/rockchip/rk30xx_mp.c
arm/amlogic/aml8726/aml8726_mp.c
arm/samsung/exynos/exynos5_mp.c
arm/arm/mp_machdep.c
arm/nvidia/tegra124/tegra124_mp.c
arm64/include/counter.h
arm64/arm64/gic_v3.c
arm64/arm64/gic_v3_its.c
arm64/arm64/gicv3_its.c

All of them should, in some sense, be CPU_FOREACH(), but it may not 
matter. For example, it may not be possible to have sparse CPU IDs on 
some or all of those SOCs. At least the generic ones (counter, 
mp_machdep.c, gic (why are there both gic_v3_its.c and gicv3_its.c?)) 
should be changed, I think.
-Nathan

On 07/02/16 10:31, outro pessoa wrote:
> Nathan,
> What type of ARM hardware do you need?
>
> On Fri, Jul 1, 2016 at 2:43 AM, Nathan Whitehorn 
> <nwhitehorn@freebsd.org <mailto:nwhitehorn@freebsd.org>> wrote:
>
>     I have been working on fixing PR 210106
>     (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=210106) and
>     have run into the fact that several pieces of the kernel, notably
>     parts of subr_taskqueue.c, require that CPU IDs be dense in the
>     range [0, mp_ncpus), which the kernel does not guarantee, for
>     example in the case of CPUs with hyperthreading in which the
>     threading is disabled. This is leading to hangs in late boot in
>     -CURRENT.
>
>     I've prepared the following patch, which fixes PR 210106, but I
>     would like a few more eyeballs on it before committing it. It
>     fixes most of the bogus uses of mp_ncpus in the kernel, but not
>     all: doing grep -R '< mp_ncpus' /sys | wc -l gives 52 remaining
>     instances of loops in [0, mp_ncpus) or [1, mp_ncpus), most or all
>     of which should instead be CPU_FOREACH(), but none of which I feel
>     comfortable changing (36 are in ARM code for hardware I don't have
>     access to).
>
>     The patch lives here:
>     http://people.freebsd.org/~nwhitehorn/sparse_cpu_ids.diff
>     <http://people.freebsd.org/%7Enwhitehorn/sparse_cpu_ids.diff>;
>     -Nathan
>     _______________________________________________
>     freebsd-hackers@freebsd.org <mailto:freebsd-hackers@freebsd.org>
>     mailing list
>     https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>     To unsubscribe, send any mail to
>     "freebsd-hackers-unsubscribe@freebsd.org
>     <mailto:freebsd-hackers-unsubscribe@freebsd.org>"
>
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5345fb94-91b8-5019-037e-d4825a694cfd>