From patchwork Fri May 15 09:44:23 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Stoica X-Patchwork-Id: 472705 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 6553014012C for ; Fri, 15 May 2015 19:45:30 +1000 (AEST) Received: from ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 49DA81A06A9 for ; Fri, 15 May 2015 19:45:30 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bn0106.outbound.protection.outlook.com [157.56.110.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 160D31A0008 for ; Fri, 15 May 2015 19:44:36 +1000 (AEST) Received: from CO2PR03CA0023.namprd03.prod.outlook.com (10.141.194.150) by BY2PR0301MB0616.namprd03.prod.outlook.com (25.160.125.26) with Microsoft SMTP Server (TLS) id 15.1.148.16; Fri, 15 May 2015 09:44:30 +0000 Received: from BL2FFO11FD055.protection.gbl (2a01:111:f400:7c09::198) by CO2PR03CA0023.outlook.office365.com (2a01:111:e400:1414::22) with Microsoft SMTP Server (TLS) id 15.1.154.19 via Frontend Transport; Fri, 15 May 2015 09:44:30 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of freescale.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD055.mail.protection.outlook.com (10.173.161.183) with Microsoft SMTP Server (TLS) id 15.1.160.8 via Frontend Transport; Fri, 15 May 2015 09:44:29 +0000 Received: from legolas.ea.freescale.net (legolas.ea.freescale.net [10.171.73.129]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id t4F9iPVH027792; Fri, 15 May 2015 02:44:26 -0700 From: Cristian Stoica To: , , , , Subject: [PATCH v2] powerpc: support sizes greater than an unsigned long Date: Fri, 15 May 2015 12:44:23 +0300 Message-ID: <1431683064-29584-1-git-send-email-cristian.stoica@freescale.com> X-Mailer: git-send-email 2.3.5 In-Reply-To: <1431620684-20123-1-git-send-email-cristian.stoica@freescale.com> References: <1431620684-20123-1-git-send-email-cristian.stoica@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD055; 1:j+ImAxCpHYCbG+Fx9IJiVSiMufFqCagcF7bnFPhQgPMpHXJSinJ7mQndAnQZVOR5xyiTYXQ+W2Lzb6kKtgxSwzj13I5cceOCXYGfpIiZaTSQ7OEk8lcQNFTUAZdczpVrXYu4XrtRbUhpHHPzoAHf4zOpXds6gRg1b1cFRHnNery0f0Ar871A7/WDd77yHkMCQQpMLmNj0VY3PeuSyVhmxhVyyIy6p6NdMqbx5c3XcW+ZbX4OfHuAtUNrxSMU76aKn5Blvultx3BZ4Vd/QhxrxI2BoFvHZ12S52+feCptZ7B5010qKsHIlaA4geqhHSLrCTIXmWehaa8woxt8CMQo9g== X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(339900001)(189002)(199003)(2201001)(87936001)(6806004)(47776003)(105606002)(106466001)(33646002)(104016003)(229853001)(2950100001)(77156002)(62966003)(77096005)(92566002)(46102003)(5001770100001)(107886002)(5001960100002)(19580405001)(19580395003)(50986999)(76176999)(85426001)(50226001)(189998001)(50466002)(48376002)(36756003)(4001430100001)(4001450100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR0301MB0616; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:sfv; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0301MB0616; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BY2PR0301MB0616; BCL:0; PCL:0; RULEID:; SRVR:BY2PR0301MB0616; X-Forefront-PRVS: 0577AD41D6 X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 May 2015 09:44:29.5381 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB0616 Cc: Cristian Stoica , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Use resource_size_t to accommodate sizes greater than the size of an unsigned long int on platforms that have more than 32 bit physical addresses Signed-off-by: Cristian Stoica Changes in v2: - update definitions is pgtable_64.c as well - or else we get broken builds on 64 - minor reformatting in pgtable_64.c to satisfy checkpatch --- arch/powerpc/include/asm/io.h | 14 +++++++------- arch/powerpc/mm/pgtable_32.c | 10 +++++----- arch/powerpc/mm/pgtable_64.c | 22 +++++++++++----------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h index a8d2ef3..749c66e 100644 --- a/arch/powerpc/include/asm/io.h +++ b/arch/powerpc/include/asm/io.h @@ -716,24 +716,24 @@ static inline void iosync(void) * be hooked (but can be used by a hook on iounmap) * */ -extern void __iomem *ioremap(phys_addr_t address, unsigned long size); -extern void __iomem *ioremap_prot(phys_addr_t address, unsigned long size, +extern void __iomem *ioremap(phys_addr_t address, resource_size_t size); +extern void __iomem *ioremap_prot(phys_addr_t address, resource_size_t size, unsigned long flags); -extern void __iomem *ioremap_wc(phys_addr_t address, unsigned long size); +extern void __iomem *ioremap_wc(phys_addr_t address, resource_size_t size); #define ioremap_nocache(addr, size) ioremap((addr), (size)) extern void iounmap(volatile void __iomem *addr); -extern void __iomem *__ioremap(phys_addr_t, unsigned long size, +extern void __iomem *__ioremap(phys_addr_t, resource_size_t size, unsigned long flags); -extern void __iomem *__ioremap_caller(phys_addr_t, unsigned long size, +extern void __iomem *__ioremap_caller(phys_addr_t, resource_size_t size, unsigned long flags, void *caller); extern void __iounmap(volatile void __iomem *addr); extern void __iomem * __ioremap_at(phys_addr_t pa, void *ea, - unsigned long size, unsigned long flags); -extern void __iounmap_at(void *ea, unsigned long size); + resource_size_t size, unsigned long flags); +extern void __iounmap_at(void *ea, resource_size_t size); /* * When CONFIG_PPC_INDIRECT_PIO is set, we use the generic iomap implementation diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index 7692d1b..a7d5137 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c @@ -135,7 +135,7 @@ pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address) } void __iomem * -ioremap(phys_addr_t addr, unsigned long size) +ioremap(phys_addr_t addr, resource_size_t size) { return __ioremap_caller(addr, size, _PAGE_NO_CACHE | _PAGE_GUARDED, __builtin_return_address(0)); @@ -143,7 +143,7 @@ ioremap(phys_addr_t addr, unsigned long size) EXPORT_SYMBOL(ioremap); void __iomem * -ioremap_wc(phys_addr_t addr, unsigned long size) +ioremap_wc(phys_addr_t addr, resource_size_t size) { return __ioremap_caller(addr, size, _PAGE_NO_CACHE, __builtin_return_address(0)); @@ -151,7 +151,7 @@ ioremap_wc(phys_addr_t addr, unsigned long size) EXPORT_SYMBOL(ioremap_wc); void __iomem * -ioremap_prot(phys_addr_t addr, unsigned long size, unsigned long flags) +ioremap_prot(phys_addr_t addr, resource_size_t size, unsigned long flags) { /* writeable implies dirty for kernel addresses */ if ((flags & (_PAGE_RW | _PAGE_RO)) != _PAGE_RO) @@ -173,13 +173,13 @@ ioremap_prot(phys_addr_t addr, unsigned long size, unsigned long flags) EXPORT_SYMBOL(ioremap_prot); void __iomem * -__ioremap(phys_addr_t addr, unsigned long size, unsigned long flags) +__ioremap(phys_addr_t addr, resource_size_t size, unsigned long flags) { return __ioremap_caller(addr, size, flags, __builtin_return_address(0)); } void __iomem * -__ioremap_caller(phys_addr_t addr, unsigned long size, unsigned long flags, +__ioremap_caller(phys_addr_t addr, resource_size_t size, unsigned long flags, void *caller) { unsigned long v, i; diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c index 59daa5e..64dd7a9 100644 --- a/arch/powerpc/mm/pgtable_64.c +++ b/arch/powerpc/mm/pgtable_64.c @@ -168,8 +168,8 @@ int map_kernel_page(unsigned long ea, unsigned long pa, int flags) * __ioremap_at - Low level function to establish the page tables * for an IO mapping */ -void __iomem * __ioremap_at(phys_addr_t pa, void *ea, unsigned long size, - unsigned long flags) +void __iomem *__ioremap_at(phys_addr_t pa, void *ea, resource_size_t size, + unsigned long flags) { unsigned long i; @@ -202,7 +202,7 @@ void __iomem * __ioremap_at(phys_addr_t pa, void *ea, unsigned long size, * are manipulated manually, like partial unmapping of * PCI IOs or ISA space. */ -void __iounmap_at(void *ea, unsigned long size) +void __iounmap_at(void *ea, resource_size_t size) { WARN_ON(((unsigned long)ea) & ~PAGE_MASK); WARN_ON(size & ~PAGE_MASK); @@ -210,8 +210,8 @@ void __iounmap_at(void *ea, unsigned long size) unmap_kernel_range((unsigned long)ea, size); } -void __iomem * __ioremap_caller(phys_addr_t addr, unsigned long size, - unsigned long flags, void *caller) +void __iomem *__ioremap_caller(phys_addr_t addr, resource_size_t size, + unsigned long flags, void *caller) { phys_addr_t paligned; void __iomem *ret; @@ -255,13 +255,13 @@ void __iomem * __ioremap_caller(phys_addr_t addr, unsigned long size, return ret; } -void __iomem * __ioremap(phys_addr_t addr, unsigned long size, - unsigned long flags) +void __iomem *__ioremap(phys_addr_t addr, resource_size_t size, + unsigned long flags) { return __ioremap_caller(addr, size, flags, __builtin_return_address(0)); } -void __iomem * ioremap(phys_addr_t addr, unsigned long size) +void __iomem *ioremap(phys_addr_t addr, resource_size_t size) { unsigned long flags = _PAGE_NO_CACHE | _PAGE_GUARDED; void *caller = __builtin_return_address(0); @@ -271,7 +271,7 @@ void __iomem * ioremap(phys_addr_t addr, unsigned long size) return __ioremap_caller(addr, size, flags, caller); } -void __iomem * ioremap_wc(phys_addr_t addr, unsigned long size) +void __iomem *ioremap_wc(phys_addr_t addr, resource_size_t size) { unsigned long flags = _PAGE_NO_CACHE; void *caller = __builtin_return_address(0); @@ -281,8 +281,8 @@ void __iomem * ioremap_wc(phys_addr_t addr, unsigned long size) return __ioremap_caller(addr, size, flags, caller); } -void __iomem * ioremap_prot(phys_addr_t addr, unsigned long size, - unsigned long flags) +void __iomem *ioremap_prot(phys_addr_t addr, resource_size_t size, + unsigned long flags) { void *caller = __builtin_return_address(0);