From patchwork Sun Dec 27 13:23:25 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Noam Camus X-Patchwork-Id: 561156 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 1FAF6140CC3 for ; Mon, 28 Dec 2015 00:28:29 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aDBN5-0000w9-LV; Sun, 27 Dec 2015 13:28:27 +0000 Received: from mail-db3on0089.outbound.protection.outlook.com ([157.55.234.89] helo=emea01-db3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aDBN2-0000t2-U5 for linux-snps-arc@lists.infradead.org; Sun, 27 Dec 2015 13:28:26 +0000 Received: from HE1PR02CA0008.eurprd02.prod.outlook.com (10.162.33.18) by AM2PR02MB0324.eurprd02.prod.outlook.com (10.160.32.143) with Microsoft SMTP Server (TLS) id 15.1.361.13; Sun, 27 Dec 2015 13:28:02 +0000 Received: from DB3FFO11FD045.protection.gbl (2a01:111:f400:7e04::109) by HE1PR02CA0008.outlook.office365.com (2a01:111:e400:5149::18) with Microsoft SMTP Server (TLS) id 15.1.361.13 via Frontend Transport; Sun, 27 Dec 2015 13:28:01 +0000 Authentication-Results: spf=fail (sender IP is 212.179.42.66) smtp.mailfrom=ezchip.com; linaro.org; dkim=none (message not signed) header.d=none; linaro.org; dmarc=none action=none header.from=ezchip.com; Received-SPF: Fail (protection.outlook.com: domain of ezchip.com does not designate 212.179.42.66 as permitted sender) receiver=protection.outlook.com; client-ip=212.179.42.66; helo=ezex10.ezchip.com; Received: from ezex10.ezchip.com (212.179.42.66) by DB3FFO11FD045.mail.protection.outlook.com (10.47.217.76) with Microsoft SMTP Server (TLS) id 15.1.355.15 via Frontend Transport; Sun, 27 Dec 2015 13:28:00 +0000 Received: from localhost.localdomain (10.1.3.132) by ezex10.ezchip.com (10.1.1.4) with Microsoft SMTP Server (TLS) id 14.3.224.2; Sun, 27 Dec 2015 15:27:46 +0200 From: Noam Camus To: Subject: [PATCH v5 06/20] ARC: Set vmalloc size from configuration Date: Sun, 27 Dec 2015 15:23:25 +0200 Message-ID: <1451222619-3610-7-git-send-email-noamc@ezchip.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1451222619-3610-1-git-send-email-noamc@ezchip.com> References: <1451222619-3610-1-git-send-email-noamc@ezchip.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-11.0.0.1191-8.000.1202-22026.007 X-TM-AS-Result: No--9.768900-8.000000-31 X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; DB3FFO11FD045; 1:PuW3VHkt8YqYkK+CCODsQYEZrgWUSG5HhFKGtENVgf7C/YW8xb/+AkXWChDvHwrMVbvnRjXudVJpdSi+gEDFSugu5zIDXU+aFwOxjCJnKi6mZp5TiQaNEmwfcpFFpLDWqJAOzckqbpRXThpkV/uQncCc/EOohR96y7kaFVKg2Fx8MDiRQkyv3Tgqh4OWUEzUcgU2X5vNumnseVJkGcdgc4tDiQrgYv4axzAW2SnamDgPJJ8qwgL2S9jOrx/uRy+lu6TIzDTAd9eUgJ4VAv+LTeZ36pqetxjKCb0rMSCeUcmCeuvIH/z3E4kELwwSt8UN7bHfUneHs3xsIDT+Yx8lKWfPFDL5GKjFFLcExC8fi1DlPFx6FRQ+JUz5n2Wm31MBsk0L++Vf0XM2FuUL2oJe3TgpwPs6GnQs+dAeuPXKoWk= X-Forefront-Antispam-Report: CIP:212.179.42.66; CTRY:IL; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(92566002)(2950100001)(85426001)(19580395003)(77096005)(110136002)(5001970100001)(107886002)(189998001)(19580405001)(87936001)(48376002)(50466002)(49486002)(86362001)(105606002)(50226001)(5003940100001)(4001430100002)(36756003)(106466001)(76176999)(5008740100001)(47776003)(2351001)(229853001)(1096002)(1220700001)(104016004)(33646002)(586003)(6806005)(50986999); DIR:OUT; SFP:1101; SCL:1; SRVR:AM2PR02MB0324; H:ezex10.ezchip.com; FPR:; SPF:Fail; PTR:ezmail.ezchip.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; AM2PR02MB0324; 2:HGwBEeZ6LYB/MFAEvHGOJz6AqF5khWujjF4bi25MnOXq1K0nz6Vhm7s5sUGyiKn0Bx/qFTMiuT6kP77jI4xMDvz9FjnHYyVTD4ghfQPocpn/53uK3Etcf5e/R0N7QQamnXU3qkS40pNBPTCYroNJBw==; 3:bgAxctHJPIhCtw/72aUg9zBBkwiUqFiCPt2bQqMxjcLjy6BwiPkpPde5dHMfJvkH4/0JW8XyF1ZS9h+QV40YsYsgl/Ny8jSjMrQNb8VAK+nZnJfbE7WAdbYqNhz1dUzhqaP0GG0pSUVL4DTKRYFJNplr+msUJ8VImhhHd5A8nuFRXprtlqrZpkwD0bbL7LBP2taGMpPtNN9XVVmAIy0uTKRk9f3MgCbOPnUTIgsP3cY=; 25:SWjPvMU2PE6VAQBejLyfFbl6CBnpXlL1ws/5wkk/EF7UgBdOjAyeJskHvTHEvmjoFDk/6pqQMxM4VoZIich8N9CSr0TNlRW1BJJn3v9HWR9Z4J4t4vPoAy7/v9t6IA9vuhPTIkSy+vz/r0IPG5vwVd6sA3b40gV31DTlk6N2adSuCUYJZ7aJmVQIE2zi13gIBI66Z7pyWHjShOj/8+4Qym3sakq8fNvCcBUcFeFChlM2eTemXPpnreVawlR5O+mBqMK8MwVNlUGMkYz2fxTCVw==; 20:6Umkim6/N1DXhhrT4e+KqhLfxIqH+6osGnF+27KAXgAzYTHASU609b1cJYHBPWrDKdNbZH8jZesG/NQAxbWRqay/r12yX4/ynFJXOW7m+oEYvfgI525H5WHsWz2XOw1mqqzbrgOLIx66T0KCiHzyx1Iu4R0hG3wCjr9BUf7EGnc= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0324; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(121898900299872); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(10201501046)(3002001); SRVR:AM2PR02MB0324; BCL:0; PCL:0; RULEID:; SRVR:AM2PR02MB0324; X-Microsoft-Exchange-Diagnostics: 1; AM2PR02MB0324; 4:38yk93UREBaPKwlNTzMj2NaevFkjlKSTATTz2/9f4rJDyGfIchwq/S5bfO/eY/xfHi4sB64CnAIsEDhOwlRxjYO1yRS4ZNBsuCPjjY1GJX0iG06EQUyFmaInsu6yQ8fQHdZy4jl1eTbbB6OhtS4uTyfG+0aaVQbgropy4XakkhxGLB31cVfBMknGF1hNJnIBnucKjKjCqePE9PCb+RQ/CY8F8S1uimBoaqvEPxVvvpX+OYt4we+6WcDrDSpdPIwtPncCwXVjULZWjVg9jutZxVa9CMgTx2WrH1NJDOlPpn4ehN5JXdD2nYJHMyEjOsm5wJRmyJK7p/h+98k5H+57Hxd0ARbfONRIbXQF+y/vb/tUrqmH+rR9TF5b8Y78ye31IMpT7Vb9OPFRG63PaQnLBU2MHbgMp64+7gezQPwVbA/6EdczsybbFYYh88Bi1o55 X-Forefront-PRVS: 0803A0241F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM2PR02MB0324; 23:MGIBGCxRhpVezpOM9YETWFpQcasWdAlXLCUrN5PIp?= =?us-ascii?Q?pqqmpJ5EUjTXrjI8cbUJZ4A56XsD7H8frHqPfTkoJTWZ+IKwxrwpo2xm5m6D?= =?us-ascii?Q?mIMCYmkJtDDnLN6Gr138Oes1QDZwMLXYunui59SSLbTbfkf9b4qVxR7gER3X?= =?us-ascii?Q?zHOSeYIwf3ULpB3+pY0Bykc3BRsRtsPE/C5bv/DSMKxL79RhG5rkYghys280?= =?us-ascii?Q?aPAHBW5T8795hWvf2dbOB3/Oz9Wi0L9FuEMZ3TVIizUu4eBtVN3mAjOjF2FY?= =?us-ascii?Q?ifl9mcvpL2/1P7PxHpKwn9It9Z3OAX7FqitbkbUyVh9M/+UyLEEznlAMiyZX?= =?us-ascii?Q?faimZhPSwoez3WlG4GwQNAGnHaqJjmCDw0ElfiwGfKrkvQTjL5Sqz9xUN1wM?= =?us-ascii?Q?xpz0mh4QIH/URxl2tI+M+3hKJ3d6KqH9PCp5osh0NPbkfdqf2hGtEmStueFp?= =?us-ascii?Q?PA5sykLGPwmwX2gaqaUFohZYwDBtYmMIw5T0jevFHXtjPicuBErxOlHXlgsu?= =?us-ascii?Q?eOzNXYMjOX88Gae1AtemlJN5wsI30DjIiPFBAvtgVRB8A+PhTCfZsbR26z8O?= =?us-ascii?Q?uW0mS9dLDS2z2+4vBKMFqHCKFc5N+hXjmdtFl4voP+0or67XNqWY6d73rkmG?= =?us-ascii?Q?X+n/PsdLZD0hKgmJQySklYsUs7VqhcFySxdZZRUdepkUY04vYDjXXmxdbqZ7?= =?us-ascii?Q?KXQc23pxNAcqFmUMF8J4gqU7FH7bATHqKwuH6APR6zHZR6IOYTm30/KRPTFW?= =?us-ascii?Q?Yr/HaonomF2y9IpEb6l2N420JfgdcF3YJxVqW7z1gmF6W562uqe8YtaiyDb6?= =?us-ascii?Q?UaI6ofrnQOTChk2t3V8Gyxn6QpN7NqTBcQYgWmHtxZF17qaZAPY9IbB105ed?= =?us-ascii?Q?MeXKkc2N64TaxTOeDjKVWLlRvdRSnbWOQFeWRBfqhEAo9Bd+PYucmCSDaSVN?= =?us-ascii?Q?jEyhI4baBCzvWiQvoGwLMlA20Hdh1gUsKp2mQOt/AHHdyLahBwOMwVCHZ0sQ?= =?us-ascii?Q?ZrcLXAnq/Zjm6D9qKsYeLJOD+KIi1OUbfU/RTeYxXrs4BQQElfAEfdNwbo5x?= =?us-ascii?Q?ao0I64cj+LFVhUsJZ54SSBK0UX4?= X-Microsoft-Exchange-Diagnostics: 1; AM2PR02MB0324; 5:caeveOInqJMl7JgUUXNLtU7ufErGLZ9aDikrX/i0WDA/l7F+2x/PyiL0cvTb+xS+BTx/fBuftWbtezUhFXHuOjBWSp7epJVBF9jYBWzC/y0fWSMSWmn7AQdJzlYd24ZqbX9EOH0CSZszVi6snhTdLA==; 24:HJH+qVdCq+RjMkS8y0lmivJBu3q0x6EmDLKLDGGCCipJXN0pF+Jgy7YhFQC7jhxKXuIsRfGQm7yBQ0D1ZLyv8R0zVrivvp38uw5FOpDar2I= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Dec 2015 13:28:00.6973 (UTC) X-MS-Exchange-CrossTenant-Id: 0fc16e0a-3cd3-4092-8b2f-0a42cff122c3 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0fc16e0a-3cd3-4092-8b2f-0a42cff122c3; Ip=[212.179.42.66]; Helo=[ezex10.ezchip.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR02MB0324 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20151227_052825_464446_6867B835 X-CRM114-Status: GOOD ( 10.80 ) X-Spam-Score: -1.9 (-) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-1.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [157.55.234.89 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [157.55.234.89 listed in wl.mailspike.net] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marc.zyngier@arm.com, cmetcalf@ezchip.com, daniel.lezcano@linaro.org, Noam Camus , linux-kernel@vger.kernel.org Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Noam Camus User space use lower 2G of the virtual address space. However kernel steals upper 512M of this space. This stolen space is used partially for vmalloc and the rest serves as gutter between kernel and user space. The vmalloc size is depend on NR_CPUS since "per cpu" mechanism use vmalloc to allocate chunks for its use. Historically vmalloc size was 256M however it is not enough in case of many CPUs e.g. 4K CPUs. For such case an extra 192M is allocated. We are setting default vmalloc size to be 256M, any addtional space will be taken from kernel/user gutter. This introduce build error since PGDIR_SIZE() cannot use "1UL" ibecause it is called from mm/tlbex.S by VMALLOC_START. Using _BITUL() solves this build error. Signed-off-by: Noam Camus Acked-by: Vineet Gupta --- arch/arc/Kconfig | 8 ++++++++ arch/arc/include/asm/pgtable.h | 2 +- arch/arc/include/asm/processor.h | 10 +++++----- arch/arc/mm/tlb.c | 6 ++++++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index 6312f60..7be1020 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -469,6 +469,14 @@ config ARCH_PHYS_ADDR_T_64BIT config ARCH_DMA_ADDR_T_64BIT bool +config ARC_VMALLOC_SIZE + hex "Vmalloc size (MB)" + range 0 512 + default "256" + help + By default equals to 256MB and the rest of 512MB is + left for gutter between kernel and user space. + config ARC_CURR_IN_REG bool "Dedicate Register r25 for current_task pointer" default y diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h index 57af2f0..372a282 100644 --- a/arch/arc/include/asm/pgtable.h +++ b/arch/arc/include/asm/pgtable.h @@ -210,7 +210,7 @@ #define BITS_FOR_PGD (32 - BITS_FOR_PTE - BITS_IN_PAGE) #define PGDIR_SHIFT (32 - BITS_FOR_PGD) -#define PGDIR_SIZE (1UL << PGDIR_SHIFT) /* vaddr span, not PDG sz */ +#define PGDIR_SIZE _BITUL(PGDIR_SHIFT) /* vaddr span, not PDG sz */ #define PGDIR_MASK (~(PGDIR_SIZE-1)) #define PTRS_PER_PTE _BITUL(BITS_FOR_PTE) diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h index 1d694c1..8a77ccd 100644 --- a/arch/arc/include/asm/processor.h +++ b/arch/arc/include/asm/processor.h @@ -109,18 +109,18 @@ extern unsigned int get_wchan(struct task_struct *p); * 0xC000_0000 0xFFFF_FFFF (peripheral uncached space) * ----------------------------------------------------------------------------- */ -#define VMALLOC_START 0x70000000 /* * 1 PGDIR_SIZE each for fixmap/pkmap, 2 PGDIR_SIZE gutter * See asm/highmem.h for details */ -#define VMALLOC_SIZE (PAGE_OFFSET - VMALLOC_START - PGDIR_SIZE * 4) -#define VMALLOC_END (VMALLOC_START + VMALLOC_SIZE) +#define VMALLOC_END (PAGE_OFFSET - PGDIR_SIZE * 4) +#define VMALLOC_SIZE (CONFIG_ARC_VMALLOC_SIZE << 20) +#define VMALLOC_START (VMALLOC_END - VMALLOC_SIZE) -#define USER_KERNEL_GUTTER 0x10000000 +#define TASK_SIZE 0x60000000 -#define TASK_SIZE (VMALLOC_START - USER_KERNEL_GUTTER) +#define USER_KERNEL_GUTTER (VMALLOC_START - TASK_SIZE) #define STACK_TOP TASK_SIZE #define STACK_TOP_MAX STACK_TOP diff --git a/arch/arc/mm/tlb.c b/arch/arc/mm/tlb.c index daf2bf5..843e1a5 100644 --- a/arch/arc/mm/tlb.c +++ b/arch/arc/mm/tlb.c @@ -814,6 +814,12 @@ void arc_mmu_init(void) printk(arc_mmu_mumbojumbo(0, str, sizeof(str))); + /* + * vmalloc size (in MB) sanity check, + * Can't be done in processor.h due to header include depenedencies + */ + BUILD_BUG_ON(!IS_ALIGNED((CONFIG_ARC_VMALLOC_SIZE << 20), PMD_SIZE)); + /* For efficiency sake, kernel is compile time built for a MMU ver * This must match the hardware it is running on. * Linux built for MMU V2, if run on MMU V1 will break down because V1