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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 DC965C433E0 for ; Tue, 2 Feb 2021 04:05:12 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4E20D64E88 for ; Tue, 2 Feb 2021 04:05:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4E20D64E88 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=soleen.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id B0B5C6B0073; Mon, 1 Feb 2021 23:05:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id ABCE86B0074; Mon, 1 Feb 2021 23:05:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9AD466B0075; Mon, 1 Feb 2021 23:05:11 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0065.hostedemail.com [216.40.44.65]) by kanga.kvack.org (Postfix) with ESMTP id 85BCB6B0073 for ; Mon, 1 Feb 2021 23:05:11 -0500 (EST) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 508E9180AD815 for ; Tue, 2 Feb 2021 04:05:11 +0000 (UTC) X-FDA: 77771987622.30.bat80_5002742275c7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin30.hostedemail.com (Postfix) with ESMTP id 2551C180B3C83 for ; Tue, 2 Feb 2021 04:05:11 +0000 (UTC) X-HE-Tag: bat80_5002742275c7 X-Filterd-Recvd-Size: 7111 Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) by imf44.hostedemail.com (Postfix) with ESMTP for ; Tue, 2 Feb 2021 04:05:10 +0000 (UTC) Received: by mail-qk1-f177.google.com with SMTP id a12so18642218qkh.10 for ; Mon, 01 Feb 2021 20:05:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen.com; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=TgEl1t62b0F8MSCHUvUj30llEevpoe++jneAMJ1Te1Y=; b=KWaqzHnwT47pq3HVkl8T4/YKZiplP0EKXd9LLGKMR16m9ottVrzafJ1STmlb/VQrti chhpcKzsnf5ipOJH4OR/NmBU5ipCKDne+XOwr3o2YXeUdudiRgz3nC3a7vs+M6cg/nfv nZZ4FfcxyrTjmzMfPvSk+UKaRF688R4lY0ok525reHjK/zNcaz8Z+BX+v+oBQ3AqDIcT hdl8Q2ssRk+KLY3bIkuCAXKZElqnB2qcZEynYOvyKRkCkt0PdcLSj7USy8s95fq2u473 KXe1maLvZuComWZZ3qfSQo9sGVr0SrtQS0YYSV0f01pXI/iyC2AfzQlD2fpTNqTrz5Tm ZBDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=TgEl1t62b0F8MSCHUvUj30llEevpoe++jneAMJ1Te1Y=; b=n70KxlkGW9sfoN6qUyy6Gq9y+DJi+hKM/Iq2aoyM2syQiL2GcrOV79/MAbW69zjGq6 wk5c4c0hBST2Cc4ChET426uMD3tRzO1wvsnrhrLilNXVDPSKR5auY+fYK8LruaErPxOy ro7G9eVqCNQBYMr+m1tkqa/kA06tT9UY1u5er46wA1EF+err1a/Sps+lbXWCZcpOZ7kH dZbS7BekknujemhcRkwonShckcDbMw6qe86QblECADtjLRBp3CXBfinNu64LqaCtgwge mqG4zqAa2wF1jHWsV48uBupkv7UIaPx77wgU+ZPxZFIxzh8IgMJpKgD7WrSZC51omNGh M7Mw== X-Gm-Message-State: AOAM533xH2wUQYvWxE1XdlrNy6AH6alUtmhd9o26kVB0zxENjgwDIecZ ckUhN9Mb6mabWvGiuFLkj465Fg== X-Google-Smtp-Source: ABdhPJyD57iDoJqHzRKcByUhWJ0LoV2NLkJy881TtZx1CW4u8Bi9xICWh7bnvAI0C9lyb9ACWi3EzQ== X-Received: by 2002:a37:9d56:: with SMTP id g83mr19487015qke.38.1612238709932; Mon, 01 Feb 2021 20:05:09 -0800 (PST) Received: from xakep (c-73-69-118-222.hsd1.nh.comcast.net. [73.69.118.222]) by smtp.gmail.com with ESMTPSA id o3sm15639979qkg.15.2021.02.01.20.05.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Feb 2021 20:05:09 -0800 (PST) Date: Mon, 1 Feb 2021 23:05:07 -0500 From: Pavel Tatashin To: Andrew Morton Cc: LKML , linux-mm , Vlastimil Babka , Michal Hocko , David Hildenbrand , Oscar Salvador , Dan Williams , Sasha Levin , kbuild-all@lists.01.org, clang-built-linux@googlegroups.com, kernel test robot Subject: Re: [PATCH v9 08/14] mm/gup: do not migrate zero page Message-ID: References: <20210201153827.444374-9-pasha.tatashin@soleen.com> <202102021007.udwVXuwA-lkp@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202102021007.udwVXuwA-lkp@intel.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hi Andrew, Should I send new patches or is the update for this patch sufficient? Here is updated patch: >From 9fb856f3a5cfda18a4b84e81dfb0266bee4a4ea6 Mon Sep 17 00:00:00 2001 From: Pavel Tatashin Date: Mon, 18 Jan 2021 17:35:18 -0500 Subject: [PATCH v9 08/14] mm/gup: do not migrate zero page On some platforms ZERO_PAGE(0) might end-up in a movable zone. Do not migrate zero page in gup during longterm pinning as migration of zero page is not allowed. For example, in x86 QEMU with 16G of memory and kernelcore=5G parameter, I see the following: Boot#1: zero_pfn 0x48a8d zero_pfn zone: ZONE_DMA32 Boot#2: zero_pfn 0x20168d zero_pfn zone: ZONE_MOVABLE On x86, empty_zero_page is declared in .bss and depending on the loader may end up in different physical locations during boots. Also, move is_zero_pfn() my_zero_pfn() functions under CONFIG_MMU, because zero_pfn that they are using is declared in memory.c which is compiled with CONFIG_MMU. is_pinnable_page() is needed only when CONFIG_MIGRATION is set, because without page migration all pages are pinnable, so add a stub version of is_pinnable_page() for !CONFIG_MIGRATION case. This also solves issues where mm.h is included but is_zero_pfn() is not available because of CONFIG_MMU is not set. Signed-off-by: Pavel Tatashin --- include/linux/mm.h | 10 +++++++++- include/linux/mmzone.h | 4 ++++ include/linux/pgtable.h | 3 +-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index db228aa8d9f7..a5cb32183ac5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1127,11 +1127,19 @@ static inline bool is_zone_movable_page(const struct page *page) return page_zonenum(page) == ZONE_MOVABLE; } +#ifdef CONFIG_MIGRATION /* MIGRATE_CMA and ZONE_MOVABLE do not allow pin pages */ static inline bool is_pinnable_page(struct page *page) { - return !is_zone_movable_page(page) && !is_migrate_cma_page(page); + return !(is_zone_movable_page(page) || is_migrate_cma_page(page)) || + is_zero_pfn(page_to_pfn(page)); } +#else +static inline bool is_pinnable_page(struct page *page) +{ + return true; +} +#endif #ifdef CONFIG_DEV_PAGEMAP_OPS void free_devmap_managed_page(struct page *page); diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 87a7f9e2d1c2..aacbed98a1ed 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -427,6 +427,10 @@ enum zone_type { * techniques might use alloc_contig_range() to hide previously * exposed pages from the buddy again (e.g., to implement some sort * of memory unplug in virtio-mem). + * 6. ZERO_PAGE(0), kernelcore/movablecore setups might create + * situations where ZERO_PAGE(0) which is allocated differently + * on different platforms may end up in a movable zone. ZERO_PAGE(0) + * cannot be migrated. * * In general, no unmovable allocations that degrade memory offlining * should end up in ZONE_MOVABLE. Allocators (like alloc_contig_range()) diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index 1d3087753426..bad0f417adb3 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -1118,6 +1118,7 @@ extern void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn, extern void untrack_pfn_moved(struct vm_area_struct *vma); #endif +#ifdef CONFIG_MMU #ifdef __HAVE_COLOR_ZERO_PAGE static inline int is_zero_pfn(unsigned long pfn) { @@ -1142,8 +1143,6 @@ static inline unsigned long my_zero_pfn(unsigned long addr) } #endif -#ifdef CONFIG_MMU - #ifndef CONFIG_TRANSPARENT_HUGEPAGE static inline int pmd_trans_huge(pmd_t pmd) { -- 2.25.1