Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Aug 2010 23:28:48 +0300
From:      Andriy Gapon <avg@freebsd.org>
To:        Jung-uk Kim <jkim@freebsd.org>, freebsd-stable@freebsd.org
Cc:        pluknet <pluknet@gmail.com>
Subject:   Re: 8.1-PRERELEASE: CPU packages not detected correctly
Message-ID:  <4C797180.5000905@freebsd.org>
In-Reply-To: <4C797023.8020206@freebsd.org>
References:  <201007141414.o6EEEUx9014690@lurza.secnetix.de> <AANLkTinYUz0V%2B2nSWBMYLf2fL8HnUQ-fvXT0q-5WY4bb@mail.gmail.com> <4C782D3B.6020407@icyb.net.ua> <201008271743.29393.jkim@FreeBSD.org> <4C7835E6.6070309@icyb.net.ua> <4C797023.8020206@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

Oops, the patch had a small mistake.
I've put it here now, just in case I'll want to fix/cleanup anything else:
http://people.freebsd.org/~avg/intel-cpu-topo.diff

on 28/08/2010 23:22 Andriy Gapon said the following:
> So, here is my take on the problem.
> The attached patch is against sources in FreeBSD tree, it should be applied
> either to sys/amd64/amd64/mp_machdep.c or sys/i386/i386/mp_machdep.c depending
> on the desired architecture.
> 
> The patch is substantially based on the Junk-uk's patch, but with some changes
> and additions:
> - topo_probo_0x4() is rewritten so that it does APIC ID matching against masks
> as described in the Intel article.  The code still heavily depends on the
> assumption of the uniform topology, it discovers number of cores in BSP package
> and number of threads in BSP core and extrapolates that to global topology.
> The difference with current code and Junk-uk's patch is that actual APIC ID
> matching is done as opposed to deriving counts purely from max. values.
> 
> - added a few comments that describe uniformity assumption, plus couple other
> useful things.
> 
> - changed "final fallback" code, so that each logical CPU is considered to be in
> its own physical package as opposed to current code placing all logical CPUs as
> cores of a single package.
> 
> The rest is Junk-uk's work.
> 
> Concerns:
> - about my code: ilog2_round_pow2 name is ugly; looking for suggestions on a
> better name or re-arranging/writing that code, so that the function is not needed.
> - about current code: logical_cpus variable (don't confuse with cpu_logical)
> doesn't seem to be consistently used; e.g. it is not set at all by
> topo_probo_0xb(); also, the method of using it for setting logical_cpus_mask
> doesn't seem to be reliable - BSP may be missed.
> 
> Reviews, comments and test reports are very welcome!
> Please test the patch if you have any problems with how CPU topology is reported
> by the current code.  Please test even if everything is OK, to avoid regressions.

-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C797180.5000905>