From owner-svn-src-all@freebsd.org Sat Feb 4 09:25:34 2017 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BDAA9CCEC54; Sat, 4 Feb 2017 09:25:34 +0000 (UTC) (envelope-from andreast@FreeBSD.org) Received: from smtp.imp.ch (smtp.imp.ch [IPv6:2001:4060:1:1001::13:196]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5E2EC1FE0; Sat, 4 Feb 2017 09:25:34 +0000 (UTC) (envelope-from andreast@FreeBSD.org) Received: from [192.168.225.14] (dhclient-91-190-14-19.flashcable.ch [91.190.14.19]) (using TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by fgznet.ch (Postfix) with ESMTPSA id 28FB2C8393; Sat, 4 Feb 2017 10:25:30 +0100 (CET) Subject: Re: svn commit: r313037 - in head/sys: amd64/include kern mips/include net powerpc/include sparc64/include To: Jason Harmening , Kurt Lidl References: <201702010332.v113WnYf041362@repo.freebsd.org> <20170203231238.0675c289@kan> <8523aaa5-6c30-9f9f-40f0-fdf82cdf1669@pix.net> Cc: Alexander Kabaev , "Jason A. Harmening" , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, Ed Maste From: Andreas Tobler Message-ID: <6bf86e46-9714-c7e9-8d47-845761e2de24@FreeBSD.org> Date: Sat, 4 Feb 2017 10:25:29 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: Obelix Submit on 127.0.1.1 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Feb 2017 09:25:34 -0000 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 > 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 > > >> wrote: > > On Wed, 1 Feb 2017 03:32:49 +0000 (UTC) > "Jason A. Harmening" wrote: > > > Author: jah > > Date: Wed Feb 1 03:32:49 2017 > > New Revision: 313037 > > URL: 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 > > > >