From patchwork Sun Aug 13 01:33:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicholas Piggin X-Patchwork-Id: 800952 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 ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xVLzM0MRcz9s7C for ; Sun, 13 Aug 2017 11:40:31 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eS6C3iCh"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3xVLzL6LVszDrFL for ; Sun, 13 Aug 2017 11:40:30 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eS6C3iCh"; dkim-atps=neutral X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from mail-pg0-x242.google.com (mail-pg0-x242.google.com [IPv6:2607:f8b0:400e:c05::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3xVLrF37bnzDrCv for ; Sun, 13 Aug 2017 11:34:21 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eS6C3iCh"; dkim-atps=neutral Received: by mail-pg0-x242.google.com with SMTP id 83so5969313pgb.4 for ; Sat, 12 Aug 2017 18:34:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Nm/391D+RpMBewf11QsqCfwlipkn3pJh+m8uSGFyO/w=; b=eS6C3iChvul2rFHvqUpv9nPV2HYPFME5SFOPGzkyaYtrDMedvy7Oc9AhSVmioFdITI U3A4A4Wt0zwiAbpFNpOe4wG+JdxjBX4oegLn68qDU6fiEeJyyaAgskqhcE101gtsvaiu CmaMzAsnLJ130FKoW5ViDCbI+3MBtd4OiR8vSxiqqAbjKbs7U/6X9TfrnxCutMjmri97 HvbP1UTkGwFlREHaW7a4hJUQBgppib1CsD9jaLTwMli9n9cDoV/UvHEH/utbiQzVr72K L5IaTVl37SkFCW8eiwbPmcP9vtVgw7hDIPErTmC1ZDYT33Rxgfgm5qBVbPvG+2EB7Fg8 LkzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Nm/391D+RpMBewf11QsqCfwlipkn3pJh+m8uSGFyO/w=; b=htCqq8aW8cWLvoEfsomP5ryMarQHFTRHuTZF/LGPqzn/IWoTAV5gpWH7yyE9eETXwa Iunvfo188ZVwAcWTD6X2JLfoyF3SaKmQtbVzSw6rYmSSRNcA4nSN4mnMgtD04a2ATMWE I49/osLpHnADFrTIpjkZGrvbgYjM0du9KK0cYTkiPcTq0yWG8wc8GpC+6rC3By3ltsix 8cIdMixRjla2srQ/WvBGPFEHdv6IaJ6iTaIeazDegzPc9DcGV7HXzKeSM92e67Zv+Bct JtMYOC0cJbD8tmJOX2cZ6UMw1+H+Ljh0HqnsWOwi07MfmJ4klpjETkxFcsxW41/0NSnX N+1Q== X-Gm-Message-State: AHYfb5im9TerTaByBniFytTzkHsspzrmnRRCxWC9i5O1IKzN9uqRa3Dg wTppd0Vw8igLwE8F X-Received: by 10.98.35.17 with SMTP id j17mr20918136pfj.150.1502588059111; Sat, 12 Aug 2017 18:34:19 -0700 (PDT) Received: from roar.local0.net (203-219-56-202.tpgi.com.au. [203.219.56.202]) by smtp.gmail.com with ESMTPSA id u69sm7776237pfa.70.2017.08.12.18.34.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 12 Aug 2017 18:34:18 -0700 (PDT) From: Nicholas Piggin To: linuxppc-dev@lists.ozlabs.org Subject: [PATCH v2 3/9] powerpc/powernv: Remove real mode access limit for early allocations Date: Sun, 13 Aug 2017 11:33:40 +1000 Message-Id: <20170813013346.14002-3-npiggin@gmail.com> X-Mailer: git-send-email 2.13.3 In-Reply-To: <20170812113416.15978-1-npiggin@gmail.com> References: <20170812113416.15978-1-npiggin@gmail.com> X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kvm-ppc@vger.kernel.org, Nicholas Piggin Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" This removes the RMA limit on powernv platform, which constrains early allocations such as PACAs and stacks. There are still other restrictions that must be followed, such as bolted SLB limits, but real mode addressing has no constraints. Signed-off-by: Nicholas Piggin --- arch/powerpc/mm/hash_utils_64.c | 24 +++++++++++++++--------- arch/powerpc/mm/pgtable-radix.c | 33 +++++++++++++++++---------------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 7a20669c19e7..d3da19cc4867 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c @@ -1824,16 +1824,22 @@ void hash__setup_initial_memory_limit(phys_addr_t first_memblock_base, */ BUG_ON(first_memblock_base != 0); - /* On LPAR systems, the first entry is our RMA region, - * non-LPAR 64-bit hash MMU systems don't have a limitation - * on real mode access, but using the first entry works well - * enough. We also clamp it to 1G to avoid some funky things - * such as RTAS bugs etc... - */ - ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000); + if (!early_cpu_has_feature(CPU_FTR_HVMODE)) { + /* + * On virtualized systems, the first entry is our RMA region, + * non-LPAR 64-bit hash MMU systems don't have a limitation + * on real mode access. + * + * We also clamp it to 1G to avoid some funky things + * such as RTAS bugs etc... + */ + ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000); - /* Finally limit subsequent allocations */ - memblock_set_current_limit(ppc64_rma_size); + /* Finally limit subsequent allocations */ + memblock_set_current_limit(ppc64_rma_size); + } else { + ppc64_rma_size = ULONG_MAX; + } } #ifdef CONFIG_DEBUG_FS diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c index 671a45d86c18..61ca17d81737 100644 --- a/arch/powerpc/mm/pgtable-radix.c +++ b/arch/powerpc/mm/pgtable-radix.c @@ -598,22 +598,23 @@ void radix__setup_initial_memory_limit(phys_addr_t first_memblock_base, * physical on those processors */ BUG_ON(first_memblock_base != 0); - /* - * We limit the allocation that depend on ppc64_rma_size - * to first_memblock_size. We also clamp it to 1GB to - * avoid some funky things such as RTAS bugs. - * - * On radix config we really don't have a limitation - * on real mode access. But keeping it as above works - * well enough. - */ - ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000); - /* - * Finally limit subsequent allocations. We really don't want - * to limit the memblock allocations to rma_size. FIXME!! should - * we even limit at all ? - */ - memblock_set_current_limit(first_memblock_base + first_memblock_size); + + if (!early_cpu_has_feature(CPU_FTR_HVMODE)) { + /* + * On virtualized systems, the first entry is our RMA region, + * non-LPAR 64-bit hash MMU systems don't have a limitation + * on real mode access. + * + * We also clamp it to 1G to avoid some funky things + * such as RTAS bugs etc... + */ + ppc64_rma_size = min_t(u64, first_memblock_size, 0x40000000); + + /* Finally limit subsequent allocations */ + memblock_set_current_limit(ppc64_rma_size); + } else { + ppc64_rma_size = ULONG_MAX; + } } #ifdef CONFIG_MEMORY_HOTPLUG