Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2869950imc; Wed, 13 Mar 2019 03:27:53 -0700 (PDT) X-Google-Smtp-Source: APXvYqxyl1860PJuOscLM61ERdyIPk0um4je4kTq/irxHeXJeaHiYttTcITdWwe1KtPAoe28OXxM X-Received: by 2002:a17:902:87:: with SMTP id a7mr44738750pla.295.1552472873459; Wed, 13 Mar 2019 03:27:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552472873; cv=none; d=google.com; s=arc-20160816; b=ErqOGpMfCnzDYG8qL+l+U98tc2FkUdNoX+y7sQCwSdy9lygVKeupy+ZVSkFPA8llgN ugbZUgnbHVDMaZSo/epbJznrsHVFNY+KD9lJmoQMDUbon9X24KBk7FRFaXtzTOUb8LLh DSr4AW5dWOWUa1Jeok70kDkEO3zMesJB4IDhh5K06f0AHboI9S43IqGXF5DofhmaQQ4k vpvP4XEw0/XkiTVvJ1WkHqK4EazqDbLpqlguyNklMdRwPpk7retmgMVScmAj7voOOghJ SS/eitrL1r8FLDK80ZBzCHxrLXDRWE+qnVCjIACzLckCLH4qZ7t+ZBNqAsM2dtMc5C5a BHvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=dkoLWAz1wxV/7ZVo+4vXmSl80q64vTWfk2Hl/fJTEjE=; b=FwLyZuG1LwTjPaCdD+m/kDfyaFml5eq69yNHDGgUEnktexZDI3GTBxG+SNirByeu9i vkbmG4v7I0lRKo18xAf7T1wptDMyrT1DArM6Tz9Put0jbCzKFHRi2oBnxxP6r3ReL13f BH1Lo8bQFIG+Fb56jLlTkVLpsqWp8iIrMSoFpP4dv3wmW1b75CD7p4VxaR7KJQWo2BBu UsvERYn7iAo6Q9Mk6jnsfwl09OjMmTJ9Yp+Z/qYuQhlifb5T28GsSKaQH2kCiU6+3Xw5 gzwTg47asTIXxh1i+zpu+z0bXlWZYndiAPFoAdYFiM+YmvYS4xZPy8Eb/EvUGREGgHPQ 6TSQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g1si10327384plp.406.2019.03.13.03.27.36; Wed, 13 Mar 2019 03:27:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726527AbfCMKZc (ORCPT + 99 others); Wed, 13 Mar 2019 06:25:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40626 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725906AbfCMKZc (ORCPT ); Wed, 13 Mar 2019 06:25:32 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 652293087BD0; Wed, 13 Mar 2019 10:25:31 +0000 (UTC) Received: from thinkpad.redhat.com (ovpn-116-28.ams2.redhat.com [10.36.116.28]) by smtp.corp.redhat.com (Postfix) with ESMTP id 38DAC27CB0; Wed, 13 Mar 2019 10:25:29 +0000 (UTC) From: Laurent Vivier To: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Christophe Leroy , David Gibson , Michael Ellerman , Laurent Vivier Subject: [PATCH v3] powerpc/mm: move warning from resize_hpt_for_hotplug() Date: Wed, 13 Mar 2019 11:25:28 +0100 Message-Id: <20190313102528.4632-1-lvivier@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.45]); Wed, 13 Mar 2019 10:25:31 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org resize_hpt_for_hotplug() reports a warning when it cannot resize the hash page table ("Unable to resize hash page table to target order") but in some cases it's not a problem and can make user thinks something has not worked properly. This patch moves the warning to arch_remove_memory() to only report the problem when it is needed. Reviewed-by: David Gibson Signed-off-by: Laurent Vivier --- Notes: v3: move "||" to above line and remove parenthesis v2: add warning messages for H_PARAMETER and H_RESOURCE arch/powerpc/include/asm/sparsemem.h | 4 ++-- arch/powerpc/mm/hash_utils_64.c | 19 +++++++------------ arch/powerpc/mm/mem.c | 3 ++- arch/powerpc/platforms/pseries/lpar.c | 3 ++- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/arch/powerpc/include/asm/sparsemem.h b/arch/powerpc/include/asm/sparsemem.h index 68da49320592..3192d454a733 100644 --- a/arch/powerpc/include/asm/sparsemem.h +++ b/arch/powerpc/include/asm/sparsemem.h @@ -17,9 +17,9 @@ extern int create_section_mapping(unsigned long start, unsigned long end, int ni extern int remove_section_mapping(unsigned long start, unsigned long end); #ifdef CONFIG_PPC_BOOK3S_64 -extern void resize_hpt_for_hotplug(unsigned long new_mem_size); +extern int resize_hpt_for_hotplug(unsigned long new_mem_size); #else -static inline void resize_hpt_for_hotplug(unsigned long new_mem_size) { } +static inline int resize_hpt_for_hotplug(unsigned long new_mem_size) { return 0; } #endif #ifdef CONFIG_NUMA diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 0cc7fbc3bd1c..5aa7594ee71b 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c @@ -755,12 +755,12 @@ static unsigned long __init htab_get_table_size(void) } #ifdef CONFIG_MEMORY_HOTPLUG -void resize_hpt_for_hotplug(unsigned long new_mem_size) +int resize_hpt_for_hotplug(unsigned long new_mem_size) { unsigned target_hpt_shift; if (!mmu_hash_ops.resize_hpt) - return; + return 0; target_hpt_shift = htab_shift_for_mem_size(new_mem_size); @@ -772,16 +772,11 @@ void resize_hpt_for_hotplug(unsigned long new_mem_size) * reduce unless the target shift is at least 2 below the * current shift */ - if ((target_hpt_shift > ppc64_pft_size) - || (target_hpt_shift < (ppc64_pft_size - 1))) { - int rc; - - rc = mmu_hash_ops.resize_hpt(target_hpt_shift); - if (rc && (rc != -ENODEV)) - printk(KERN_WARNING - "Unable to resize hash page table to target order %d: %d\n", - target_hpt_shift, rc); - } + if (target_hpt_shift > ppc64_pft_size || + target_hpt_shift < ppc64_pft_size - 1) + return mmu_hash_ops.resize_hpt(target_hpt_shift); + + return 0; } int hash__create_section_mapping(unsigned long start, unsigned long end, int nid) diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 33cc6f676fa6..0d40d970cf4a 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -169,7 +169,8 @@ int __meminit arch_remove_memory(int nid, u64 start, u64 size, */ vm_unmap_aliases(); - resize_hpt_for_hotplug(memblock_phys_mem_size()); + if (resize_hpt_for_hotplug(memblock_phys_mem_size()) == -ENOSPC) + pr_warn("Hash collision while resizing HPT\n"); return ret; } diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c index f2a9f0adc2d3..1034ef1fe2b4 100644 --- a/arch/powerpc/platforms/pseries/lpar.c +++ b/arch/powerpc/platforms/pseries/lpar.c @@ -901,8 +901,10 @@ static int pseries_lpar_resize_hpt(unsigned long shift) break; case H_PARAMETER: + pr_warn("Invalid argument from H_RESIZE_HPT_PREPARE\n"); return -EINVAL; case H_RESOURCE: + pr_warn("Operation not permitted from H_RESIZE_HPT_PREPARE\n"); return -EPERM; default: pr_warn("Unexpected error %d from H_RESIZE_HPT_PREPARE\n", rc); @@ -918,7 +920,6 @@ static int pseries_lpar_resize_hpt(unsigned long shift) if (rc != 0) { switch (state.commit_rc) { case H_PTEG_FULL: - pr_warn("Hash collision while resizing HPT\n"); return -ENOSPC; default: -- 2.20.1