Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Feb 2017 10:25:29 +0100
From:      Andreas Tobler <andreast@FreeBSD.org>
To:        Jason Harmening <jason.harmening@gmail.com>, Kurt Lidl <lidl@pix.net>
Cc:        Alexander Kabaev <kabaev@gmail.com>, "Jason A. Harmening" <jah@freebsd.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, Ed Maste <emaste@freebsd.org>
Subject:   Re: svn commit: r313037 - in head/sys: amd64/include kern mips/include net powerpc/include sparc64/include
Message-ID:  <6bf86e46-9714-c7e9-8d47-845761e2de24@FreeBSD.org>
In-Reply-To: <CAM=8qa=YB_kBsFRS%2Ba7kR%2BZTkyjmRnwY7r9vfZ48SyyZ2BZddg@mail.gmail.com>
References:  <201702010332.v113WnYf041362@repo.freebsd.org> <20170203231238.0675c289@kan> <CAM=8qa=h3=sfro02hCQyzqkDnLO7TnQJ8ugCoa5=MfNE_OCgZg@mail.gmail.com> <8523aaa5-6c30-9f9f-40f0-fdf82cdf1669@pix.net> <CAM=8qa=YB_kBsFRS%2Ba7kR%2BZTkyjmRnwY7r9vfZ48SyyZ2BZddg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 04.02.17 07:27, Jason Harmening wrote:
> It's hard to argue with that:)  I've backed it out until we can figure
> out what's going on.
> Sorry for the breakage.


For the record, powerpc64 was also affected.

Andreas
>
> On Fri, Feb 3, 2017 at 9:54 PM, Kurt Lidl <lidl@pix.net
> <mailto:lidl@pix.net>> wrote:
>
>     Having just spent a couple of hours bisecting what broke the kernel on
>     my mips64 machine, I can definitively state it was this commit.
>
>     With this commit in place, the kernel hangs early in the
>     autoconfiguration:
>
>     gcc version 4.2.1 20070831 patched [FreeBSD]
>     Preloaded elf kernel "kernel" at 0xffffffff80aa96a0.
>     real memory  = 523239424 (510976K bytes)
>     Physical memory chunk(s):
>     0x00bf3000 - 0x080d5fff, 122564608 bytes (29923 pages)
>     0x08101000 - 0x0ff00fff, 132120576 bytes (32256 pages)
>     0x410000000 - 0x41f196fff, 253325312 bytes (61847 pages)
>     avail memory = 504360960 (480MB)
>     Create COP2 context zone
>     AP #1 started!
>     FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
>     ---- hangs here ----
>
>     -Kurt
>
>     On 2/4/17 12:29 AM, Jason Harmening wrote:
>
>         Hi,
>
>         I'm a bit confused as to how this change breaks MIPS.  The new
>         function,
>         get_pcpu() is intended to be used only to access the per-cpu data
>         pointer locally.  It returns pcpup, which is the per-cpu pointer
>         wired
>         into the local TLB to translate to the local CPU's physical data
>         region,
>         correct?
>
>         This is the same value used by the per-CPU accessors such as
>         PCPU_ADD
>         and PCPU_GET.  The MI portions of this change only use get_pcpu() to
>         access  the local CPU's data, e.g. under a critical section in the
>         rmlock.  It is not intended to be used for iterating all CPUs.
>
>         If I've missed something and MIPS is truly broken by this, then I'll
>         gladly revert, but (maybe because it's late) I'm not seeing
>         where this
>         goes wrong on MIPS.
>
>         Thanks,
>         Jason
>
>         On Fri, Feb 3, 2017 at 8:12 PM, Alexander Kabaev
>         <kabaev@gmail.com <mailto:kabaev@gmail.com>
>         <mailto:kabaev@gmail.com <mailto:kabaev@gmail.com>>> wrote:
>
>             On Wed, 1 Feb 2017 03:32:49 +0000 (UTC)
>             "Jason A. Harmening" <jah@FreeBSD.org> wrote:
>
>             > Author: jah
>             > Date: Wed Feb  1 03:32:49 2017
>             > New Revision: 313037
>             > URL: https://svnweb.freebsd.org/changeset/base/313037
>         <https://svnweb.freebsd.org/changeset/base/313037>;
>             <https://svnweb.freebsd.org/changeset/base/313037
>         <https://svnweb.freebsd.org/changeset/base/313037>>;
>             >
>             > Log:
>             >   Implement get_pcpu() for the remaining architectures and
>         use it to
>             >   replace pcpu_find(curcpu) in MI code.
>             >
>             > Modified:
>             >   head/sys/amd64/include/pcpu.h
>             >   head/sys/kern/kern_rmlock.c
>             >   head/sys/mips/include/pcpu.h
>             >   head/sys/net/netisr.c
>             >   head/sys/powerpc/include/cpufunc.h
>             >   head/sys/powerpc/include/pcpu.h
>             >   head/sys/sparc64/include/pcpu.h
>             >
>
>             Hi,
>
>             this change was not reviewed nor testing was thought for all
>             architectures it touches. The change happens to break MIPS quite
>             thoroughly, since MIPS is using different pointers when
>         accessing PCPU
>             area locally and when doing iterations using cpu_to_cpuid
>         array. I
>             therefore officially am requesting this change to be
>         reverted until
>             reasonable solution is found to unbreak architectures that
>         use wired
>             TLBs to access local per-CPU data.
>
>             --
>             Alexander Kabaev
>
>
>
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6bf86e46-9714-c7e9-8d47-845761e2de24>