From owner-svn-src-all@FreeBSD.ORG Sat May 7 22:17:19 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3CA48106566C; Sat, 7 May 2011 22:17:19 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-yi0-f54.google.com (mail-yi0-f54.google.com [209.85.218.54]) by mx1.freebsd.org (Postfix) with ESMTP id 9B0288FC0A; Sat, 7 May 2011 22:17:18 +0000 (UTC) Received: by yie12 with SMTP id 12so1893141yie.13 for ; Sat, 07 May 2011 15:17:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=fp+o6nrvUXrh1bzABXJ/b4K5AE/YALM/ebUA10Xehcc=; b=T86O52BFvnuuoPzFmq24c/Scemh3YfhBdqL6Vex1xJVa/qeF5x8S/h6CEuuT6fXFZ0 0DLcDh14HMqO5BZLZAQG/s/276+LCNDuFxEwbMZg81kfRDfdYD7f8yg7WzCJ8ALHcwPI tPYIw95WjGk66k3pa7SSvM12IUXXbVvR2B/tU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=jzWP+FDoR5mkm6dH6Br5nO1dRoiTVR/w5PBFUcDmch6X2ouSJcwGPORHx5fGin6D85 aRx0Yypi0aYfVvdYtxX08acTHmtBvtmzhLK+LfTrbGnyMDqDTX4dklCmowCN1jiTJlxl WnS3fRpR5fof55OSEVhOLKSiaVIlMYd4SIIs8= MIME-Version: 1.0 Received: by 10.236.193.10 with SMTP id j10mr6271731yhn.506.1304806637958; Sat, 07 May 2011 15:17:17 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.236.111.33 with HTTP; Sat, 7 May 2011 15:17:17 -0700 (PDT) In-Reply-To: References: <201105062043.p46Kh2Vs065320@svn.freebsd.org> Date: Sat, 7 May 2011 18:17:17 -0400 X-Google-Sender-Auth: WHz490UONud1Um92halgTeB8Gow Message-ID: From: Attilio Rao To: Nathan Whitehorn Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, andreast@freebsd.org Subject: Re: svn commit: r221550 - head/sys/powerpc/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 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, 07 May 2011 22:17:19 -0000 2011/5/6 Attilio Rao : > 2011/5/6 Nathan Whitehorn : >> Author: nwhitehorn >> Date: Fri May =C2=A06 20:43:02 2011 >> New Revision: 221550 >> URL: http://svn.freebsd.org/changeset/base/221550 >> >> Log: >> =C2=A0SMP has worked perfectly for a very long time on 32-bit PowerPC on= both >> =C2=A0UP and SMP hardware. Enable it in GENERIC. >> > > While working on largeSMP, I think there is a breakage in atomic.h. > More specifically, atomic_store_rel_long() (and related functions) are > not going to properly work because powerpc defines them as: > > atomic_store_rel_long -> atomic_store_rel_32(volatile u_int *p, u_int v) > > while this should really follow the long arguments. > > This happens because powerpc doesn't follow the other architectures > semantic on defining the "similar" atomic operations. > Other arches define an hardcode version of _type version of the > function and than make a macro the _32 (or whatever) version. > In other words this is what they do: > > void > atomic_store_rel_32() > { > ... > } > > #define atomic_store_rel_int atomic_store_rel_32 > > which si clearly dangerous for cases as reported above. Maybe that > could be fixed by passing sized types, rather than simply int or long > in numbered version, but I'd really prefer to follow the semantic by > other architectures and then have: > > void > atomic_store_rel_int() > { > ... > } > > #define atomic_store_rel_32 atomic_store_rel_int > > I fixed the ATOMIC_STORE_LOAD case in my code, because I needed it, > but the final cleanup is much bigger. > I can make a patch tomorrow if you can test it. > Can you please test and review this patch?: http://www.freebsd.org/~attilio/largeSMP/atomic-powerpc.diff Unfortunately I'm having issues with the toolchains in atm, so I can't really neither test compile it. Let me know, Attilio --=20 Peace can only be achieved by understanding - A. Einstein