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=-17.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 74CEAC433ED for ; Mon, 12 Apr 2021 12:12:08 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 248E061287 for ; Mon, 12 Apr 2021 12:12:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 248E061287 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id AACC96B0036; Mon, 12 Apr 2021 08:12:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A5D566B006C; Mon, 12 Apr 2021 08:12:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D6D46B006E; Mon, 12 Apr 2021 08:12:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0100.hostedemail.com [216.40.44.100]) by kanga.kvack.org (Postfix) with ESMTP id 7262A6B0036 for ; Mon, 12 Apr 2021 08:12:07 -0400 (EDT) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 28AE7180AD5DA for ; Mon, 12 Apr 2021 12:12:07 +0000 (UTC) X-FDA: 78023601894.25.2E5EF2E Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by imf13.hostedemail.com (Postfix) with ESMTP id AFE2BE00011B for ; Mon, 12 Apr 2021 12:12:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1618229526; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0FRzHQeGmtY+XVUG66yYZyx5FvjaCGGmC0HzyI2rdPI=; b=A3VwIclX+V1kQV1xEYcluJnPo1IAoNQ0S3pl3Dv4WSuEZnnOf3J74ZkMEvkHAUEOx2W2Gx aosWE+7hqSWFPA5NlIvN+7k9mWaVC71s+1odxNZ5PPv02qgz0Ubu4h7ERsw0ia8I8UyKqZ E2b14c3wb/jc1yPcJoZ8nNjat4PPrQY= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-59-Dj_7CfwxNiaZdNArJLTbWg-1; Mon, 12 Apr 2021 08:12:03 -0400 X-MC-Unique: Dj_7CfwxNiaZdNArJLTbWg-1 Received: by mail-wr1-f72.google.com with SMTP id s13so5949108wrt.21 for ; Mon, 12 Apr 2021 05:12:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=0FRzHQeGmtY+XVUG66yYZyx5FvjaCGGmC0HzyI2rdPI=; b=URO/qz87d01phvKeq4L54hQJcSubQngzIb6Svple5TQBZbX619b3PgIAMpm89D+1q9 tbnOo71LZNp/pd3mkjXpVQNzaTr7CkuHbXStsfOePHrs8SLE1Uta+Gd+LJkxrODwVW6Z LkaQWhXteyOKnX8u36FpnR9756BjopkjJMg5PphMsM1d3VUWUJUmrhPodMy808qQLsVa sWTCM2PTL+z6+b37194JBBUspxb21etrvS4XSDZ3pggnmeR6NWKooh/7x6deds49a5RD ftWUXE/+yMvSOaRQQtihoRwmoIfg/P+OCV/RL3bb/36UiDS8OvV1E49psfijh79MIXa6 i68Q== X-Gm-Message-State: AOAM5304DOMNjsGwY878vdJjYwb6F1X6PKW8i84+WweioCoXobaweQEp LRyvMfYRv+Brj3jk6L2bIo6kcaGatFQt39yf7osk+aQreSMzHwZUMvtndASnxkW6L8zKrRCBJqc +PUEasQCAcBM= X-Received: by 2002:a7b:c399:: with SMTP id s25mr13435852wmj.97.1618229522215; Mon, 12 Apr 2021 05:12:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwYZAtdTsObf6yw+wYcFlQHOUQ+18hDCXWnhJGBtobevOjPB+PEmrF69HFwFDCNdrLVtjorow== X-Received: by 2002:a7b:c399:: with SMTP id s25mr13435816wmj.97.1618229521866; Mon, 12 Apr 2021 05:12:01 -0700 (PDT) Received: from [192.168.3.132] (p5b0c66cb.dip0.t-ipconnect.de. [91.12.102.203]) by smtp.gmail.com with ESMTPSA id n9sm7053945wmo.27.2021.04.12.05.12.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 12 Apr 2021 05:12:01 -0700 (PDT) Subject: Re: [PATCH v2 resend] mm/memory_hotplug: Make unpopulated zones PCP structures unreachable during hot remove To: Mel Gorman , Andrew Morton Cc: Oscar Salvador , "Michael S. Tsirkin" , Vlastimil Babka , Alexander Duyck , Minchan Kim , Michal Hocko , Linux-MM , LKML References: <20210412120842.GY3697@techsingularity.net> From: David Hildenbrand Organization: Red Hat Message-ID: Date: Mon, 12 Apr 2021 14:12:00 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <20210412120842.GY3697@techsingularity.net> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Stat-Signature: 8gkzter4xqja1tfeyiai88ikerj44uo5 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: AFE2BE00011B Received-SPF: none (redhat.com>: No applicable sender policy available) receiver=imf13; identity=mailfrom; envelope-from=""; helo=us-smtp-delivery-124.mimecast.com; client-ip=216.205.24.124 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1618229523-424742 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: On 12.04.21 14:08, Mel Gorman wrote: > zone_pcp_reset allegedly protects against a race with drain_pages > using local_irq_save but this is bogus. local_irq_save only operates > on the local CPU. If memory hotplug is running on CPU A and drain_pages > is running on CPU B, disabling IRQs on CPU A does not affect CPU B and > offers no protection. > > This patch deletes IRQ disable/enable on the grounds that IRQs protect > nothing and assumes the existing hotplug paths guarantees the PCP cannot be > used after zone_pcp_enable(). That should be the case already because all > the pages have been freed and there is no page to put on the PCP lists. > > Signed-off-by: Mel Gorman > --- > Resending for email address correction and adding lists > > Changelog since v1 > o Minimal fix > > mm/page_alloc.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 5e8aedb64b57..9bf0db982f14 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -8952,12 +8952,9 @@ void zone_pcp_enable(struct zone *zone) > > void zone_pcp_reset(struct zone *zone) > { > - unsigned long flags; > int cpu; > struct per_cpu_pageset *pset; > > - /* avoid races with drain_pages() */ > - local_irq_save(flags); > if (zone->pageset != &boot_pageset) { > for_each_online_cpu(cpu) { > pset = per_cpu_ptr(zone->pageset, cpu); > @@ -8966,7 +8963,6 @@ void zone_pcp_reset(struct zone *zone) > free_percpu(zone->pageset); > zone->pageset = &boot_pageset; > } > - local_irq_restore(flags); > } > > #ifdef CONFIG_MEMORY_HOTREMOVE > This was originally introduced by 340175b7d14d ("mm/hotplug: free zone->pageset when a zone becomes empty"). I wonder why it was ever added. Could it be that drain_pages() could have been called from an interrupt handler (e.g., on concurrent CPU hotunplug of the current CPU?) back then while we are just about to remove it ourselves? Anyhow, if we need some protection after setting the zone unpopulated (setting present_pages = 0), it doesn't seem like disabling local IRQs is the right thing to do. Reviewed-by: David Hildenbrand -- Thanks, David / dhildenb