From patchwork Wed Aug 17 15:51:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reza Arbab X-Patchwork-Id: 660169 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3sDv1g4QKtz9t2L for ; Thu, 18 Aug 2016 01:54:47 +1000 (AEST) Received: from ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3sDv1g3cZ1zDrHK for ; Thu, 18 Aug 2016 01:54:47 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3sDtxx0QH9zDqdr for ; Thu, 18 Aug 2016 01:51:32 +1000 (AEST) Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u7HFMlkG061106 for ; Wed, 17 Aug 2016 11:51:30 -0400 Received: from e17.ny.us.ibm.com (e17.ny.us.ibm.com [129.33.205.207]) by mx0b-001b2d01.pphosted.com with ESMTP id 24vmf0556n-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 17 Aug 2016 11:51:30 -0400 Received: from localhost by e17.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 17 Aug 2016 11:51:28 -0400 Received: from d01dlp03.pok.ibm.com (9.56.250.168) by e17.ny.us.ibm.com (146.89.104.204) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 17 Aug 2016 11:51:25 -0400 X-IBM-Helo: d01dlp03.pok.ibm.com X-IBM-MailFrom: arbab@linux.vnet.ibm.com Received: from b01cxnp23034.gho.pok.ibm.com (b01cxnp23034.gho.pok.ibm.com [9.57.198.29]) by d01dlp03.pok.ibm.com (Postfix) with ESMTP id A66F9C90045; Wed, 17 Aug 2016 11:51:13 -0400 (EDT) Received: from b01ledav004.gho.pok.ibm.com (b01ledav004.gho.pok.ibm.com [9.57.199.109]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id u7HFoxTc17302014; Wed, 17 Aug 2016 15:51:28 GMT Received: from b01ledav004.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0886A112069; Wed, 17 Aug 2016 11:51:25 -0400 (EDT) Received: from arbab-laptop.localdomain (unknown [9.53.92.230]) by b01ledav004.gho.pok.ibm.com (Postfix) with ESMTP id EA1B2112067; Wed, 17 Aug 2016 11:51:24 -0400 (EDT) Received: by arbab-laptop.localdomain (Postfix, from userid 152845) id B3EFF4606EC; Wed, 17 Aug 2016 10:51:23 -0500 (CDT) From: Reza Arbab To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , "Aneesh Kumar K.V" , Balbir Singh , linuxppc-dev@lists.ozlabs.org Subject: [RFC v2 2/2] powerpc/mm: add radix__{create, remove}_section_mapping() Date: Wed, 17 Aug 2016 10:51:23 -0500 X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1471449083-15931-1-git-send-email-arbab@linux.vnet.ibm.com> References: <1471449083-15931-1-git-send-email-arbab@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16081715-0040-0000-0000-0000011569B0 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00005608; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000181; SDB=6.00745971; UDB=6.00351638; IPR=6.00518515; BA=6.00004664; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00012366; XFM=3.00000011; UTC=2016-08-17 15:51:27 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16081715-0041-0000-0000-000004EFDD25 Message-Id: <1471449083-15931-3-git-send-email-arbab@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-08-17_09:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1608170172 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.22 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" Add radix variants of the memory hotplug mapping functions. Signed-off-by: Reza Arbab --- arch/powerpc/include/asm/book3s/64/radix.h | 5 +++++ arch/powerpc/include/asm/sparsemem.h | 8 ++++++++ arch/powerpc/mm/pgtable-radix.c | 23 +++++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h index df29422..97e71cb 100644 --- a/arch/powerpc/include/asm/book3s/64/radix.h +++ b/arch/powerpc/include/asm/book3s/64/radix.h @@ -229,6 +229,11 @@ extern void radix__vmemmap_remove_mapping(unsigned long start, extern int radix__map_kernel_page(unsigned long ea, unsigned long pa, pgprot_t flags, unsigned int psz); +#ifdef CONFIG_MEMORY_HOTPLUG +int radix__create_section_mapping(unsigned long start, unsigned long end); +void radix__remove_section_mapping(unsigned long start, unsigned long end); +#endif /* CONFIG_MEMORY_HOTPLUG */ + static inline unsigned long radix__get_tree_size(void) { unsigned long rts_field; diff --git a/arch/powerpc/include/asm/sparsemem.h b/arch/powerpc/include/asm/sparsemem.h index 5014e0d..42fe87e 100644 --- a/arch/powerpc/include/asm/sparsemem.h +++ b/arch/powerpc/include/asm/sparsemem.h @@ -19,12 +19,20 @@ static inline int create_section_mapping(unsigned long start, unsigned long end) { + if (radix_enabled()) + return radix__create_section_mapping(start, end); + return hash__create_section_mapping(start, end); } static inline int remove_section_mapping(unsigned long start, unsigned long end) { + if (radix_enabled()) { + radix__remove_section_mapping(start, end); + return 0; + } + return hash__remove_section_mapping(start, end); } diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c index af897d9..ee0286c 100644 --- a/arch/powerpc/mm/pgtable-radix.c +++ b/arch/powerpc/mm/pgtable-radix.c @@ -527,3 +527,26 @@ int radix__has_transparent_hugepage(void) return 0; } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ + +#ifdef CONFIG_MEMORY_HOTPLUG +int radix__create_section_mapping(unsigned long start, unsigned long end) +{ + unsigned long page_size = 1 << mmu_psize_defs[mmu_linear_psize].shift; + + /* Align to the page size of the linear mapping. */ + start = _ALIGN_DOWN(start, page_size); + + for (; start < end; start += page_size) { + int rc = radix__map_kernel_page(start, __pa(start), + PAGE_KERNEL, page_size); + if (rc) + return rc; + } + + return 0; +} + +void radix__remove_section_mapping(unsigned long start, unsigned long end) +{ +} +#endif /* CONFIG_MEMORY_HOTPLUG */