Review request: sparse CPU ID maps
Nathan Whitehorn
nwhitehorn at freebsd.org
Sun Jul 3 00:09:08 UTC 2016
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 at freebsd.org <mailto:nwhitehorn at 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 at freebsd.org <mailto:freebsd-hackers at freebsd.org>
> mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to
> "freebsd-hackers-unsubscribe at freebsd.org
> <mailto:freebsd-hackers-unsubscribe at freebsd.org>"
>
>
More information about the freebsd-hackers
mailing list