All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miaohe Lin <linmiaohe@huawei.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Vitaly Wool <vitaly.wool@konsulko.com>,
	Linux-MM <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 5/9] revert "mm/z3fold.c: allow __GFP_HIGHMEM in z3fold_alloc"
Date: Fri, 20 May 2022 10:30:48 +0800	[thread overview]
Message-ID: <3338d160-61e7-c099-0ea7-5c987d9c879d@huawei.com> (raw)
In-Reply-To: <20220519113112.7531614a96dc4852ba61fdbc@linux-foundation.org>

On 2022/5/20 2:31, Andrew Morton wrote:
> On Thu, 19 May 2022 19:34:01 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote:
> 
>> On 2022/5/19 15:12, Vitaly Wool wrote:
>>> On Fri, Apr 29, 2022 at 8:41 AM Miaohe Lin <linmiaohe@huawei.com> wrote:
>>>>
>>>> Revert commit f1549cb5ab2b ("mm/z3fold.c: allow __GFP_HIGHMEM in
>>>> z3fold_alloc").
>>>>
>>>> z3fold can't support GFP_HIGHMEM page now. page_address is used
>>>> directly at all places. Moreover, z3fold_header is on per cpu
>>>> unbuddied list which could be access anytime. So we should rid
>>>> the support of GFP_HIGHMEM allocation for z3fold.
>>>
>>> Could you please clarify how kmem_cache is affected here?
>>
>> With this code changes, kmem_cache should be unaffected. HIGHMEM is still not supported for
>> kmem_cache just like before but caller ensures __GFP_HIGHMEM is not passed in now. The issue
>> I want to fix here is that if z3fold page is allocated from highmem, page_address can't be
>> used directly. Did I answer your question? Or don't I get your point?
>>
> 
> Yes, page_address() against a highmem page only works if that page has
> been mapped into pagetables with kmap() or kmap_atomic(), and z3fold
> doesn't appear to do that.

What's more, usually z3fold page is on the percpu unbuddied list and thus can be
accessed directly at any time when needed. So we can't do kunmap or kunmap_atomic
until z3fold page is taken off the list.

> 
> Given that other zpool_driver implementations do appear to support
> highmem pages, I expect that z3fold should be taught likewise.
> 

IMHO, it might be too cumbersome to support highmem pages due to above reason.

> 
> I didn't look very hard, but this particular patch is a bit worrisome. 
> As I understand it, zswap can enable highmem:
> 
> 	if (zpool_malloc_support_movable(entry->pool->zpool))
> 		gfp |= __GFP_HIGHMEM | __GFP_MOVABLE;
> 
> and z3fold will silently ignore the __GFP_HIGHMEM, which is OK.  But
> with this patch, z3fold will now return -EINVAL, so existing setups
> will start failing?

IIUC, malloc_support_movable is never set for z3fold_zpool_driver. So zpool_malloc_support_movable
will always return false, i.e. __GFP_HIGHMEM | __GFP_MOVABLE won't be set for z3fold page now
(otherwise page_address will return NULL for highmem pages and null-pointer dereferencing should be
witnessed already). Therefore existing setups will keep unaffected. Or am I miss something?

Thanks a lot!

> 
> .
> 


  reply	other threads:[~2022-05-20  2:31 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-29  6:40 [PATCH 0/9] A few fixup patches for z3fold Miaohe Lin
2022-04-29  6:40 ` [PATCH 1/9] mm/z3fold: fix sheduling while atomic Miaohe Lin
2022-05-19  7:00   ` Vitaly Wool
2022-04-29  6:40 ` [PATCH 2/9] mm/z3fold: fix possible null pointer dereferencing Miaohe Lin
2022-05-19  7:04   ` Vitaly Wool
2022-04-29  6:40 ` [PATCH 3/9] mm/z3fold: remove buggy use of stale list for allocation Miaohe Lin
2022-05-19  7:06   ` Vitaly Wool
2022-04-29  6:40 ` [PATCH 4/9] mm/z3fold: throw warning on failure of trylock_page in z3fold_alloc Miaohe Lin
2022-05-19  7:10   ` Vitaly Wool
2022-05-19 11:10     ` Miaohe Lin
2022-04-29  6:40 ` [PATCH 5/9] revert "mm/z3fold.c: allow __GFP_HIGHMEM in z3fold_alloc" Miaohe Lin
2022-05-19  7:12   ` Vitaly Wool
2022-05-19 11:34     ` Miaohe Lin
2022-05-19 18:31       ` Andrew Morton
2022-05-20  2:30         ` Miaohe Lin [this message]
2022-04-29  6:40 ` [PATCH 6/9] mm/z3fold: put z3fold page back into unbuddied list when reclaim or migration fails Miaohe Lin
2022-05-19  7:13   ` Vitaly Wool
2022-04-29  6:40 ` [PATCH 7/9] mm/z3fold: always clear PAGE_CLAIMED under z3fold page lock Miaohe Lin
2022-05-19  7:14   ` Vitaly Wool
2022-04-29  6:40 ` [PATCH 8/9] mm/z3fold: fix z3fold_reclaim_page races with z3fold_free Miaohe Lin
2022-05-19  7:24   ` Vitaly Wool
2022-04-29  6:40 ` [PATCH 9/9] mm/z3fold: fix z3fold_page_migrate races with z3fold_map Miaohe Lin
2022-05-19  7:28   ` Vitaly Wool
2022-05-17 23:45 ` [PATCH 0/9] A few fixup patches for z3fold Andrew Morton
2022-05-18  2:01   ` Miaohe Lin
2022-05-18 10:39     ` Vitaly Wool
2022-05-19  1:54       ` Miaohe Lin

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=3338d160-61e7-c099-0ea7-5c987d9c879d@huawei.com \
    --to=linmiaohe@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=vitaly.wool@konsulko.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.