Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp172786iob; Mon, 2 May 2022 16:15:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyQQ0qDRrA67CjrlM2HyIPFsDfCSQwaw9vrtC0AjOaHYxKhbweIHzgMehf/frzzvyyTT5rV X-Received: by 2002:a17:902:d2c9:b0:15e:a266:6472 with SMTP id n9-20020a170902d2c900b0015ea2666472mr7626115plc.45.1651533305998; Mon, 02 May 2022 16:15:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651533305; cv=none; d=google.com; s=arc-20160816; b=B+1xGZ/HK9A1xw5iKFzw1cBas7w68hpLiB0pPLt+CnqfU/A6iLnSjezap94Ck82ESU /jAWFoSAsP9V2tdm6HZ6AqDxPFsDuvMF3lkM884PO2XH7BD56c/E7eSXabp+lVUj6V9Q QEDWmIeNJeEryEFf7Zat+JpV2+WIDOy88xAOxqO0PPQh1QqoUuqwp9Lcw5hfvpvBhm2p 5FCgPLP71Fh2lKncRgifxfrHGiR7DzuN7ITDOj3bezOB2WhuFWFFJDsSv21LCNpC2lTm sfy3aeX4PHihgWz3KRK0XeKTC6Kff6Pj/M/FhDLOuDezk1hLtWZ9JS0z39b16gDIu9mM TeUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:sender:dkim-signature; bh=soDrUCknMyVVYvPemA56PqNhiuKbCg1Of1bAYvzc04U=; b=A+YIYMZDssVkazr938Rmv+hdn8W5HdkQ9lYiYevHid4nOARDhxPqFCP9sgzc+UJtj1 piiSl8mwHvuHUThNixkYrDvU/7QnAAnL+7sgm9kOAC3roY4N3jCYb1fE0wL4bQHTaNYc GTtszyoTZcHrSeHm8w1JdrC3dA64xVNbyX4zHd/Cz7EpDAmTljDsESksXWjOUh7QnWpl ujCGKEBtH//+9scQ1Jqc4S9gDVS7U8GGKbXszXRCbUAoJ1PnRG+BxyepAgAw4FZaYCp0 9NSyHMQvbxEJuhBIcCZkVoa9MhmdxRWind0skHyvXXiWmUUFyl2iRDU3/yLPNjus0KQh 8Vng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=oTUjwX3W; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id h13-20020a056a001a4d00b0050dde3c0d4csi5352086pfv.284.2022.05.02.16.15.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 May 2022 16:15:05 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=oTUjwX3W; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 97B192FFF6; Mon, 2 May 2022 16:14:55 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1386817AbiEBS0n (ORCPT + 99 others); Mon, 2 May 2022 14:26:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238642AbiEBS0m (ORCPT ); Mon, 2 May 2022 14:26:42 -0400 Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com [IPv6:2607:f8b0:4864:20::533]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21A616597 for ; Mon, 2 May 2022 11:23:12 -0700 (PDT) Received: by mail-pg1-x533.google.com with SMTP id 15so12268761pgf.4 for ; Mon, 02 May 2022 11:23:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=soDrUCknMyVVYvPemA56PqNhiuKbCg1Of1bAYvzc04U=; b=oTUjwX3W6oKX63IESDbFmRou3OK04x5xQm2299xh4kb56hLaAlhHqWKqmHjkQ9s1uO wiIBW9rDjKFSPCo0CnXwM18i658p8tSKW5tASbbgwFbtw/XwhJqm67p8ax+nhqQRLktI yCs9E5sk4JbOzsRXMj1/3iVyPgMTyl074NjUksuM2nG0HM1/Lxn2PPoZ/d3MFnV7Agjs YjUvXkqg3jUazRc72iAh6aUOe842coqldh4mD8I64oZxhGRB5Wm0Tb/jQTQDO+L7e97J YW0Am1f+76DXlBdHTABOv4Q0PU+gClsSUIk9Ax9Olz3XlpA5C4CBTZwRMIYkRa337vJB j7MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to; bh=soDrUCknMyVVYvPemA56PqNhiuKbCg1Of1bAYvzc04U=; b=11c5SsUWfWuxFVKlj1/qdrgdiR+/wrkthFoJ+d4ISxbpavgjlyVTpYONEh7kdU4bEp l+XjjQWXlZGsLFyDRKtOSazSiPMvYweJYfLxA8TfUt2tPE26MWRJDwCBdNMw9q3WhpJn X47oYuQCTPeMmoZf0QAzutQk/txuS1mABQJ1uI7AWO9n6G1x8pvV2VhgWN4Q2jxo36i/ 8K87PFbYU7aQ67lZfWVbzW8sufK9vIHnOMRGuPUO2y7X/91BhFSDaJHF/DTpXrYH4eKt o3vEo4GSfGd3YphViVvksK+j9hUSxWwI8w+a2KD9yzWJsScXxHvcw74bGbpx4y97RNL3 1+bw== X-Gm-Message-State: AOAM532EJyqn3N3uN5G62OEdnge6X0GpOvohBY2JBh5uP2wGCdcdZe7D BSjSrqDQ/qkrxMQFAeIJVlQ= X-Received: by 2002:a05:6a00:890:b0:4f6:686e:a8a9 with SMTP id q16-20020a056a00089000b004f6686ea8a9mr12290094pfj.83.1651515791589; Mon, 02 May 2022 11:23:11 -0700 (PDT) Received: from google.com ([2620:15c:211:201:4d84:d37e:584f:bdbc]) by smtp.gmail.com with ESMTPSA id 12-20020a170902c14c00b0015e8d4eb1ecsm4968964plj.54.2022.05.02.11.22.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 May 2022 11:22:49 -0700 (PDT) Sender: Minchan Kim Date: Mon, 2 May 2022 11:22:33 -0700 From: Minchan Kim To: David Hildenbrand Cc: Andrew Morton , linux-mm , LKML , John Hubbard , John Dias Subject: Re: [PATCH] mm: fix is_pinnable_page against on cma page Message-ID: References: <20220502173558.2510641-1-minchan@kernel.org> <29d0c1c3-a44e-4573-7e7e-32be07544dbe@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <29d0c1c3-a44e-4573-7e7e-32be07544dbe@redhat.com> X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, May 02, 2022 at 08:02:31PM +0200, David Hildenbrand wrote: > On 02.05.22 19:35, Minchan Kim wrote: > > Pages on CMA area could have MIGRATE_ISOLATE as well as MIGRATE_CMA > > so current is_pinnable_page could miss CMA pages which has MIGRATE_ > > ISOLATE. It ends up putting CMA pages longterm pinning possible on > > pin_user_pages APIs so CMA allocation fails. > > > > The CMA allocation path protects the migration type change race > > using zone->lock but what GUP path need to know is just whether the > > page is on CMA area or not rather than exact type. Thus, we don't > > need zone->lock but just checks the migratype in either of > > (MIGRATE_ISOLATE and MIGRATE_CMA). > > > > Signed-off-by: Minchan Kim > > --- > > include/linux/mm.h | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > index 6acca5cecbc5..f59bbe3296e3 100644 > > --- a/include/linux/mm.h > > +++ b/include/linux/mm.h > > @@ -1625,8 +1625,10 @@ static inline bool page_needs_cow_for_dma(struct vm_area_struct *vma, > > #ifdef CONFIG_MIGRATION > > static inline bool is_pinnable_page(struct page *page) > > { > > - return !(is_zone_movable_page(page) || is_migrate_cma_page(page)) || > > - is_zero_pfn(page_to_pfn(page)); > > + int mt = get_pageblock_migratetype(page); > > + > > + return !(is_zone_movable_page(page) || mt == MIGRATE_CMA || > > + mt == MIGRATE_ISOLATE || is_zero_pfn(page_to_pfn(page))); > > } > > #else > > static inline bool is_pinnable_page(struct page *page) > > That implies that other memory ranges that are currently isolated > (memory offlining, alloc_contig_range()) cannot be pinned. That might > not be a bad thing, however, I think we could end up failing to pin > something that's temporarily unmovable (due to temporary references). Sure. > > However, I assume we have the same issue right now already with > ZONE_MOVABLE and MIGRATE_CMA when trying to pin a page residing on these ZONE_MOVALBE is also changed dynamically? > there are temporarily unmovable and we fail to migrate. But it would now > apply even without ZONE_MOVABLE or MIGRATE_CMA. Hm... Didn't parse your last mention.