From patchwork Mon Feb 24 15:33:24 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Capper X-Patchwork-Id: 25205 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-qa0-f70.google.com (mail-qa0-f70.google.com [209.85.216.70]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 0C60A2066E for ; Mon, 24 Feb 2014 15:34:24 +0000 (UTC) Received: by mail-qa0-f70.google.com with SMTP id m5sf9391181qaj.9 for ; Mon, 24 Feb 2014 07:34:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:from:to:subject:date:message-id :in-reply-to:references:cc:precedence:list-id:list-unsubscribe :list-archive:list-post:list-help:list-subscribe:mime-version:sender :errors-to:x-original-sender:x-original-authentication-results :mailing-list:content-type:content-transfer-encoding; bh=DYrGgyEuP0GAE/bWX1c5Zh0J0Zmx7HGIs2yrtqtSM5k=; b=LXrBDPlgdw4sUyY3EkScvoEscraZ3oS90vXIcCYpVNvEbmZDDyjDdpr0JDpj6GhwBS +wCCCPZ9tJovhIl7uN3GLtwQWxgsJ1keQMw7r9RxQ0zFXVpW36rmtRpbT9aJIBTI720c yNqBYHPfxkiG1V2fNaEJBdluJz162xJCoLv5HkSM1s0RBCCjgwokrhJFXflXlOQfbGd/ P1+iL+TiUlavIsoBTksZIoDam8mEe9f+wGCzKFo20cShkPS7bRGpWNN9i6oS0w5E2fAc 6xHgTIO9YePBzcSOcSNPzQNzOiEIVrmyWVJbZc4k2YQiyfEA18QHwOzlH0tTVPB2RVl3 6oDw== X-Gm-Message-State: ALoCoQkxDZByGaml3K7SRWbC222eSYPrp4NcuZ2jCpII6lLDcnXHp5yLBV1BEeNZFPljq+yet+Io X-Received: by 10.224.47.129 with SMTP id n1mr10984272qaf.4.1393256064753; Mon, 24 Feb 2014 07:34:24 -0800 (PST) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.87.5 with SMTP id q5ls1906265qgd.99.gmail; Mon, 24 Feb 2014 07:34:24 -0800 (PST) X-Received: by 10.52.190.195 with SMTP id gs3mr441405vdc.67.1393256064632; Mon, 24 Feb 2014 07:34:24 -0800 (PST) Received: from mail-vc0-f176.google.com (mail-vc0-f176.google.com [209.85.220.176]) by mx.google.com with ESMTPS id o6si5925036vcn.96.2014.02.24.07.34.24 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Feb 2014 07:34:24 -0800 (PST) Received-SPF: neutral (google.com: 209.85.220.176 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.220.176; Received: by mail-vc0-f176.google.com with SMTP id la4so5807857vcb.21 for ; Mon, 24 Feb 2014 07:34:24 -0800 (PST) X-Received: by 10.52.23.68 with SMTP id k4mr10978529vdf.24.1393256064536; Mon, 24 Feb 2014 07:34:24 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.174.196 with SMTP id u4csp69501vcz; Mon, 24 Feb 2014 07:34:24 -0800 (PST) X-Received: by 10.180.219.44 with SMTP id pl12mr15185967wic.12.1393256063553; Mon, 24 Feb 2014 07:34:23 -0800 (PST) Received: from casper.infradead.org (casper.infradead.org. [2001:770:15f::2]) by mx.google.com with ESMTPS id lr5si15602996wjb.138.2014.02.24.07.34.23 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Feb 2014 07:34:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-arm-kernel-bounces+patch=linaro.org@lists.infradead.org designates 2001:770:15f::2 as permitted sender) client-ip=2001:770:15f::2; Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1WHxXe-0004yx-ME; Mon, 24 Feb 2014 15:34:02 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1WHxXc-0000Ei-QL; Mon, 24 Feb 2014 15:34:00 +0000 Received: from mail-wg0-f44.google.com ([74.125.82.44]) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1WHxXZ-0000C8-FS for linux-arm-kernel@lists.infradead.org; Mon, 24 Feb 2014 15:33:58 +0000 Received: by mail-wg0-f44.google.com with SMTP id k14so4741442wgh.23 for ; Mon, 24 Feb 2014 07:33:34 -0800 (PST) X-Received: by 10.180.185.197 with SMTP id fe5mr14861900wic.56.1393256014228; Mon, 24 Feb 2014 07:33:34 -0800 (PST) Received: from marmot.wormnet.eu (marmot.wormnet.eu. [188.246.204.87]) by mx.google.com with ESMTPSA id cm5sm25271736wid.5.2014.02.24.07.33.33 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Feb 2014 07:33:33 -0800 (PST) From: Steve Capper To: linux-arm-kernel@lists.infradead.org, linux@arm.linux.org.uk Subject: [RFC PATCH 1/2] arm: mm: Introduce pte_isset(pte,flag) Date: Mon, 24 Feb 2014 15:33:24 +0000 Message-Id: <1393256005-2206-2-git-send-email-steve.capper@linaro.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1393256005-2206-1-git-send-email-steve.capper@linaro.org> References: <1393256005-2206-1-git-send-email-steve.capper@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20140224_103357_615961_C4BAD618 X-CRM114-Status: UNSURE ( 8.64 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.6 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.6 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [74.125.82.44 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: catalin.marinas@arm.com, will.deacon@arm.com, Steve Capper X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patch=linaro.org@lists.infradead.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: steve.capper@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.220.176 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 Long descriptors on ARM are 64 bits, and some pte functions such as pte_dirty return a bitwise-and of a flag with the pte value. If the flag to be tested resides in the upper 32 bits of the pte, then we run into the danger of the result being dropped if downcast. For example: gather_stats(page, md, pte_dirty(*pte), 1); where pte_dirty(*pte) is downcast to an int. This patch introduces a new macro pte_isset which performs the bitwise and, then performs a double logical invert to ensure predictable downcasting. Signed-off-by: Steve Capper --- arch/arm/include/asm/pgtable.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index 7d59b52..13626b8 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h @@ -214,12 +214,14 @@ static inline pte_t *pmd_page_vaddr(pmd_t pmd) #define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0) +#define pte_isset(pte, val) (!!(pte_val(pte) & (val))) + #define pte_none(pte) (!pte_val(pte)) -#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) -#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) -#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) -#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) -#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) +#define pte_present(pte) (pte_isset((pte), L_PTE_PRESENT)) +#define pte_write(pte) (!pte_isset((pte), L_PTE_RDONLY)) +#define pte_dirty(pte) (pte_isset((pte), L_PTE_DIRTY)) +#define pte_young(pte) (pte_isset((pte), L_PTE_YOUNG)) +#define pte_exec(pte) (!pte_isset((pte), L_PTE_XN)) #define pte_special(pte) (0) #define pte_present_user(pte) (pte_present(pte) && (pte_val(pte) & L_PTE_USER))