From: Michal Hocko <mhocko@kernel.org>
To: Huaisheng Ye <yehs2007@gmail.com>
Cc: akpm@linux-foundation.org, linux-mm@kvack.org,
willy@infradead.org, vbabka@suse.cz, mgorman@techsingularity.net,
kstewart@linuxfoundation.org, alexander.levin@verizon.com,
gregkh@linuxfoundation.org, colyli@suse.de, chengnt@lenovo.com,
hehy1@lenovo.com, linux-kernel@vger.kernel.org,
iommu@lists.linux-foundation.org, xen-devel@lists.xenproject.org,
linux-btrfs@vger.kernel.org, Huaisheng Ye <yehs1@lenovo.com>
Subject: Re: [RFC PATCH v2 00/12] get rid of GFP_ZONE_TABLE/BAD
Date: Tue, 22 May 2018 20:37:28 +0200 [thread overview]
Message-ID: <20180522183728.GB20441@dhcp22.suse.cz> (raw)
In-Reply-To: <1526916033-4877-1-git-send-email-yehs2007@gmail.com>
On Mon 21-05-18 23:20:21, Huaisheng Ye wrote:
> From: Huaisheng Ye <yehs1@lenovo.com>
>
> Replace GFP_ZONE_TABLE and GFP_ZONE_BAD with encoded zone number.
>
> Delete ___GFP_DMA, ___GFP_HIGHMEM and ___GFP_DMA32 from GFP bitmasks,
> the bottom three bits of GFP mask is reserved for storing encoded
> zone number.
>
> The encoding method is XOR. Get zone number from enum zone_type,
> then encode the number with ZONE_NORMAL by XOR operation.
> The goal is to make sure ZONE_NORMAL can be encoded to zero. So,
> the compatibility can be guaranteed, such as GFP_KERNEL and GFP_ATOMIC
> can be used as before.
>
> Reserve __GFP_MOVABLE in bit 3, so that it can continue to be used as
> a flag. Same as before, __GFP_MOVABLE respresents movable migrate type
> for ZONE_DMA, ZONE_DMA32, and ZONE_NORMAL. But when it is enabled with
> __GFP_HIGHMEM, ZONE_MOVABLE shall be returned instead of ZONE_HIGHMEM.
> __GFP_ZONE_MOVABLE is created to realize it.
>
> With this patch, just enabling __GFP_MOVABLE and __GFP_HIGHMEM is not
> enough to get ZONE_MOVABLE from gfp_zone. All callers should use
> GFP_HIGHUSER_MOVABLE or __GFP_ZONE_MOVABLE directly to achieve that.
>
> Decode zone number directly from bottom three bits of flags in gfp_zone.
> The theory of encoding and decoding is,
> A ^ B ^ B = A
So why is this any better than the current code. Sure I am not a great
fan of GFP_ZONE_TABLE because of how it is incomprehensible but this
doesn't look too much better, yet we are losing a check for incompatible
gfp flags. The diffstat looks really sound but then you just look and
see that the large part is the comment that at least explained the gfp
zone modifiers somehow and the debugging code. So what is the selling
point?
> Changes since v1,
>
> v2: Add __GFP_ZONE_MOVABLE and modify GFP_HIGHUSER_MOVABLE to help
> callers to get ZONE_MOVABLE. Add __GFP_ZONE_MASK to mask lowest 3
> bits of GFP bitmasks.
> Modify some callers' gfp flag to update usage of address zone
> modifiers.
> Modify inline function gfp_zone to get better performance according
> to Matthew's suggestion.
>
> Link: https://marc.info/?l=linux-mm&m=152596791931266&w=2
>
> Huaisheng Ye (12):
> include/linux/gfp.h: get rid of GFP_ZONE_TABLE/BAD
> arch/x86/kernel/amd_gart_64: update usage of address zone modifiers
> arch/x86/kernel/pci-calgary_64: update usage of address zone modifiers
> drivers/iommu/amd_iommu: update usage of address zone modifiers
> include/linux/dma-mapping: update usage of address zone modifiers
> drivers/xen/swiotlb-xen: update usage of address zone modifiers
> fs/btrfs/extent_io: update usage of address zone modifiers
> drivers/block/zram/zram_drv: update usage of address zone modifiers
> mm/vmpressure: update usage of address zone modifiers
> mm/zsmalloc: update usage of address zone modifiers
> include/linux/highmem: update usage of movableflags
> arch/x86/include/asm/page.h: update usage of movableflags
>
> arch/x86/include/asm/page.h | 3 +-
> arch/x86/kernel/amd_gart_64.c | 2 +-
> arch/x86/kernel/pci-calgary_64.c | 2 +-
> drivers/block/zram/zram_drv.c | 6 +--
> drivers/iommu/amd_iommu.c | 2 +-
> drivers/xen/swiotlb-xen.c | 2 +-
> fs/btrfs/extent_io.c | 2 +-
> include/linux/dma-mapping.h | 2 +-
> include/linux/gfp.h | 98 +++++-----------------------------------
> include/linux/highmem.h | 4 +-
> mm/vmpressure.c | 2 +-
> mm/zsmalloc.c | 4 +-
> 12 files changed, 26 insertions(+), 103 deletions(-)
>
> --
> 1.8.3.1
>
--
Michal Hocko
SUSE Labs
next prev parent reply other threads:[~2018-05-22 18:37 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-21 15:20 Huaisheng Ye
2018-05-21 15:20 ` [RFC PATCH v2 01/12] include/linux/gfp.h: " Huaisheng Ye
2018-05-21 15:20 ` [RFC PATCH v2 02/12] arch/x86/kernel/amd_gart_64: update usage of address zone modifiers Huaisheng Ye
2018-05-22 9:38 ` Christoph Hellwig
2018-05-22 10:17 ` [External] " Huaisheng HS1 Ye
2018-05-21 15:20 ` [RFC PATCH v2 03/12] arch/x86/kernel/pci-calgary_64: " Huaisheng Ye
2018-05-21 15:20 ` [RFC PATCH v2 04/12] drivers/iommu/amd_iommu: " Huaisheng Ye
2018-05-21 15:20 ` [RFC PATCH v2 05/12] include/linux/dma-mapping: " Huaisheng Ye
2018-05-21 15:30 ` Christoph Hellwig
2018-05-21 15:20 ` [RFC PATCH v2 10/12] mm/zsmalloc: " Huaisheng Ye
2018-05-22 11:22 ` Matthew Wilcox
2018-05-22 11:51 ` [External] " Huaisheng HS1 Ye
2018-05-21 15:20 ` [RFC PATCH v2 11/12] include/linux/highmem: update usage of movableflags Huaisheng Ye
2018-05-21 15:20 ` [RFC PATCH v2 12/12] arch/x86/include/asm/page.h: " Huaisheng Ye
2018-05-22 9:40 ` [RFC PATCH v2 00/12] get rid of GFP_ZONE_TABLE/BAD Christoph Hellwig
2018-05-22 18:37 ` Michal Hocko [this message]
2018-05-23 16:07 ` [External] " Huaisheng HS1 Ye
2018-05-24 12:18 ` Michal Hocko
2018-05-25 9:43 ` Huaisheng HS1 Ye
2018-05-28 13:37 ` Michal Hocko
2018-05-30 9:02 ` Huaisheng HS1 Ye
2018-05-30 9:11 ` Christoph Hellwig
2018-05-30 9:12 ` Michal Hocko
2018-05-24 5:19 ` Matthew Wilcox
2018-05-24 12:23 ` Michal Hocko
2018-05-24 15:18 ` Matthew Wilcox
2018-05-24 15:29 ` Michal Hocko
2018-05-25 12:00 ` Matthew Wilcox
2018-05-28 13:33 ` Michal Hocko
2018-05-22 10:22 Huaisheng HS1 Ye
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180522183728.GB20441@dhcp22.suse.cz \
--to=mhocko@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alexander.levin@verizon.com \
--cc=chengnt@lenovo.com \
--cc=colyli@suse.de \
--cc=gregkh@linuxfoundation.org \
--cc=hehy1@lenovo.com \
--cc=iommu@lists.linux-foundation.org \
--cc=kstewart@linuxfoundation.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
--cc=xen-devel@lists.xenproject.org \
--cc=yehs1@lenovo.com \
--cc=yehs2007@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox