From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A7CCC433DB for ; Mon, 18 Jan 2021 13:14:18 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1B54422B47 for ; Mon, 18 Jan 2021 13:14:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1B54422B47 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Owner; bh=lZn/oty232OTxya40CPF8neAj/y1rFtPgjI2k1eJ6mc=; b=kv7Ftv6vbJx7kfBUYnxQ/uT4y/ IVXPeLYcGkOKYnNPB6Ykb1RehHbg/u2CyQh3bXd4TfE/gjnGSVVIvN3i+8OEjXnONCyqB6ouKarUV RFZx8OUVZ4vYDNMTz2RTVxnXWSX/C+Am/QS1qrtX9+0l92TNEgWNVYgNDQi/jGRrNyL1H30LXRSqA iSTEID8Ith2DunSkjM9L5gj1qlpsW9DtEHtPQzQuCBkW9sAwIyIskwyb+35PXJu5emSAfdyoVm/mM QdkTT41KyEUZ+nNTcJ6nR9ewGzlXz/cwdOrCbnxjoeobqI0til8WDlHvkH109EzqHV4shResZc2GE bd+H/1EQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l1UL1-0005lr-EP; Mon, 18 Jan 2021 13:12:55 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l1UKx-0005kn-F5 for linux-arm-kernel@lists.infradead.org; Mon, 18 Jan 2021 13:12:53 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 15F2331B; Mon, 18 Jan 2021 05:12:49 -0800 (PST) Received: from p8cg001049571a15.arm.com (unknown [10.163.89.163]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 3054D3F719; Mon, 18 Jan 2021 05:12:43 -0800 (PST) From: Anshuman Khandual To: linux-mm@kvack.org, akpm@linux-foundation.org, david@redhat.com, hca@linux.ibm.com, catalin.marinas@arm.com Subject: [PATCH V3 0/3] mm/memory_hotplug: Pre-validate the address range with platform Date: Mon, 18 Jan 2021 18:42:58 +0530 Message-Id: <1610975582-12646-1-git-send-email-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.7.4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210118_081251_607932_B583E65C X-CRM114-Status: GOOD ( 15.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , linux-s390@vger.kernel.org, Vasily Gorbik , Anshuman Khandual , linux-kernel@vger.kernel.org, Will Deacon , Ard Biesheuvel , linux-arm-kernel@lists.infradead.org, Oscar Salvador MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org This series adds a mechanism allowing platforms to weigh in and prevalidate incoming address range before proceeding further with the memory hotplug. This helps prevent potential platform errors for the given address range, down the hotplug call chain, which inevitably fails the hotplug itself. This mechanism was suggested by David Hildenbrand during another discussion with respect to a memory hotplug fix on arm64 platform. https://lore.kernel.org/linux-arm-kernel/1600332402-30123-1-git-send-email-anshuman.khandual@arm.com/ This mechanism focuses on the addressibility aspect and not [sub] section alignment aspect. Hence check_hotplug_memory_range() and check_pfn_span() have been left unchanged. Wondering if all these can still be unified in an expanded memhp_range_allowed() check, that can be called from multiple memory hot add and remove paths. This series applies on v5.11-rc4 and has been tested on arm64. But only build tested on s390. Changes in V3 - Updated the commit message in [PATCH 1/3] - Replaced 1 with 'true' and 0 with 'false' in memhp_range_allowed() - Updated memhp_range.end as VMEM_MAX_PHYS - 1 and updated vmem_add_mapping() on s390 - Changed memhp_range_allowed() behaviour in __add_pages() - Updated __add_pages() to return E2BIG when memhp_range_allowed() fails for non-linear mapping based requests Changes in V2: https://lore.kernel.org/linux-mm/1608218912-28932-1-git-send-email-anshuman.khandual@arm.com/ - Changed s390 version per Heiko and updated the commit message - Called memhp_range_allowed() only for arch_add_memory() in pagemap_range() - Exported the symbol memhp_get_pluggable_range() Changes in V1: https://lore.kernel.org/linux-mm/1607400978-31595-1-git-send-email-anshuman.khandual@arm.com/ - Fixed build problems with (MEMORY_HOTPLUG & !MEMORY_HOTREMOVE) - Added missing prototype for arch_get_mappable_range() - Added VM_BUG_ON() check for memhp_range_allowed() in arch_add_memory() per David Changes in RFC V2: https://lore.kernel.org/linux-mm/1606706992-26656-1-git-send-email-anshuman.khandual@arm.com/ Incorporated all review feedbacks from David. - Added additional range check in __segment_load() on s390 which was lost - Changed is_private init in pagemap_range() - Moved the framework into mm/memory_hotplug.c - Made arch_get_addressable_range() a __weak function - Renamed arch_get_addressable_range() as arch_get_mappable_range() - Callback arch_get_mappable_range() only handles range requiring linear mapping - Merged multiple memhp_range_allowed() checks in register_memory_resource() - Replaced WARN() with pr_warn() in memhp_range_allowed() - Replaced error return code ERANGE with E2BIG Changes in RFC V1: https://lore.kernel.org/linux-mm/1606098529-7907-1-git-send-email-anshuman.khandual@arm.com/ Cc: Oscar Salvador Cc: Heiko Carstens Cc: Vasily Gorbik Cc: Catalin Marinas Cc: Will Deacon Cc: Ard Biesheuvel Cc: Mark Rutland Cc: David Hildenbrand Cc: Andrew Morton Cc: linux-arm-kernel@lists.infradead.org Cc: linux-s390@vger.kernel.org Cc: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org Anshuman Khandual (3): mm/memory_hotplug: Prevalidate the address range being added with platform arm64/mm: Define arch_get_mappable_range() s390/mm: Define arch_get_mappable_range() David Hildenbrand (1): virtio-mem: check against memhp_get_pluggable_range() which memory we can hotplug arch/arm64/mm/mmu.c | 15 +++---- arch/s390/mm/init.c | 1 + arch/s390/mm/vmem.c | 15 ++++++- drivers/virtio/virtio_mem.c | 40 +++++++++++------ include/linux/memory_hotplug.h | 10 +++++ mm/memory_hotplug.c | 79 ++++++++++++++++++++++++++-------- mm/memremap.c | 6 +++ 7 files changed, 125 insertions(+), 41 deletions(-) -- 2.20.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel